サンプル集  >  C#  >  JavaScriptSerializer
JavaScriptSerializer
2019/06/21

JavaScriptSerializerを使ってjson文字列を作ってみます。

◆環境
OS Windows 7 Professional Service Pack 1 64bit
C# 01018-587-4054026-70893

以下の手順を行います。

  1. [ファイル]-[新規作成]-[プロジェクト]を選択します。
  2. [Visual C#]を選択し、[Windows コンソール アプリケーション]を選択します。
    「プロジェクト名」は「JavaScriptSerializerTest」にします。

プロジェクトを右クリックし[プロパティ]を選択します。


「.NET Framework 4.0」を選択します。

「OK」ボタンを押します。

プロジェクトを右クリックし[参照の追加]を選択します。

「.NET」タブを選択し「System.Web.Extensions」を選択し「OK」ボタンを押します。

json文字列の作成と読み込みをするようにしてみます。

Program.cs
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Script.Serialization;

namespace JavaScriptSerializerTest
{
    public class Trn
    {
        public decimal trn_nmbr;
        public string item_code;
        public decimal amount;

        public void dump()
        {
            Console.WriteLine("trn_nmbr={0}", trn_nmbr);
            Console.WriteLine("item_code={0}", item_code);
            Console.WriteLine("amount={0}", amount);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var data = new Trn();
            data.trn_nmbr = 1m;
            data.item_code = "001";
            data.amount = 120m;

            // Trn class -> json string
            var json
                = new JavaScriptSerializer()
                          .Serialize(data);

            Console.WriteLine(json.ToString());

            // json string -> Trn class
            var trn
                = new JavaScriptSerializer()
                          .Deserialize<Trn>(json);

            trn.dump();

            // 固定文字列を読み込ませる
            string s
                = "{\"trn_nmbr\":2"
                + ",\"item_code\":\"001\""
                + ",\"amount\":150}"
                ;
            trn = new JavaScriptSerializer()
                          .Deserialize<Trn>(s);
            trn.dump();

            // Trnクラスにない項目を指定してみる
            s = "{\"trn_nmbr\":2"
              + ",\"amount\":150"
              + ",\"tax\":15}"
              ;
            trn = new JavaScriptSerializer()
                          .Deserialize<Trn>(s);
            trn.dump();

            Console.ReadLine();
        }
    }
}

実行してみます。

{"trn_nmbr":1,"item_code":"001","amount":120}
trn_nmbr=1
item_code=001
amount=120
trn_nmbr=2
item_code=001
amount=150
trn_nmbr=2
item_code=
amount=150

期待通りに動作しました。
json文字列を、固定文字列で定義して読み込ませても正常に解釈できました。
対象クラスにない項目を指定しても無視されるだけのようです。

▲ PageTop  ■ Home


Copyright (C) 2019 ymlib.com