C#におけるJSONとオブジェクト間の相互変換機能の例
3119 ワード
この例では,C#実装JSONとオブジェクト間の相互変換機能について述べる.皆さんの参考にしてください.具体的には以下の通りです.
1.まず宣言ユーザ情報オブジェクト,DataContract修飾クラスはJSON,DataMember修飾属性,Orderは解析の順序,またLoverは配列リスト,ガールフレンド個数を表す
Addressは配送先、DailyRecordは日常記録
2.JSONヘルプクラスコアコード
3.呼び出し
4.逆シーケンス化の結果
コードは次のとおりです.
「UserName」:「劉徳華」、「Age」:10、「Gender」:1、「Lover」:「美人1」、「美人2」、「美人3」、「Address」:「Province」:「湖南省」、「City」:「長沙市」、「Country」:「望城県」、「Details」:「どこかの宅配便で見つからない場所」、「DailyRecord」:「{Key」:「月曜日」、「Value」:「食事」、{Key」、「Key」:「火曜日」>「バリュー」:「洗濯」}、「キー」>「水曜日」>「バリュー」>「いいこと」}}
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」:「火曜日」>「バリュー」:「洗濯」}、「キー」>「水曜日」>「バリュー」>「いいこと」}}