C#におけるJSONとオブジェクト間の相互変換機能の例


この例では,C#実装JSONとオブジェクト間の相互変換機能について述べる.皆さんの参考にしてください.具体的には以下の通りです.
1.まず宣言ユーザ情報オブジェクト,DataContract修飾クラスはJSON,DataMember修飾属性,Orderは解析の順序,またLoverは配列リスト,ガールフレンド個数を表す
Addressは配送先、DailyRecordは日常記録
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
namespace FunctionTest.Model
{
  [DataContract]
  public class UserInfo
  {
    [DataMember(Order =0)]
    public string UserName { get; set; }
    [DataMember(Order = 1)]
    public int Age { get; set; }
    [DataMember(Order = 2)]
    public int Gender { get; set; }
    [DataMember(Order =3)]
    public List Lover { get; set; }
    [DataMember(Order = 4)]
    public ContactAddress Address { get; set; }
    [DataMember(Order = 5)]
    public Dictionary DailyRecord {
      get; set;
    }
  }
  [DataContract]
  public class ContactAddress
  {
    [DataMember(Order =0)]
    public string Province { get; set; }
    [DataMember(Order = 1)]
    public string City { get; set; }
    [DataMember(Order = 2)]
    public string Country { get; set; }
    [DataMember(Order = 3)]
    public string Details { get; set; }
  }
}


2.JSONヘルプクラスコアコード
/// 
/// Json     
/// 
/// 
/// 
/// 
public static T JsonToObject(string jsonText)
{
  DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(T));
  MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));
  T obj = (T)s.ReadObject(ms);
  ms.Dispose();
  return obj;
}
/// 
///      JSON
/// 
/// 
/// 
/// 
public static string ObjectToJSON(T obj)
{
  DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
  string result = string.Empty;
  using (MemoryStream ms = new MemoryStream())
  {
    serializer.WriteObject(ms, obj);
    ms.Position = 0;
    using (StreamReader read = new StreamReader(ms))
    {
      result = read.ReadToEnd();
    }
  }
  return result;
}


3.呼び出し
//1.  -->JSON
UserInfo info = new UserInfo
{
    Age = 10,
    Gender = 1,
    UserName = "   ",
    Lover = new List { "  1", "  2", "  3" },
    Address = new ContactAddress
    {
      Province = "   ",
      City = "   ",
      Country = "   ",
      Details = "           "
    },
    DailyRecord = new Dictionary { { "   ", "  " }, { "   ", "   " }, { "   ", "   " } }
};
string json = ObjectToJSON(info);


4.逆シーケンス化の結果
 
コードは次のとおりです.
「UserName」:「劉徳華」、「Age」:10、「Gender」:1、「Lover」:「美人1」、「美人2」、「美人3」、「Address」:「Province」:「湖南省」、「City」:「長沙市」、「Country」:「望城県」、「Details」:「どこかの宅配便で見つからない場所」、「DailyRecord」:「{Key」:「月曜日」、「Value」:「食事」、{Key」、「Key」:「火曜日」>「バリュー」:「洗濯」}、「キー」>「水曜日」>「バリュー」>「いいこと」}}