C#JSONとオブジェクト間の相互変換を実現する機能例

4474 ワード

この例では,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":"   ","Value":"   "},{"Key":"   ","Value":"   "}]} 
 

PS:json操作について、ここではいくつかの実用的なjsonオンラインツールをお勧めします.
オンラインJSONコード検査、検査、美化、フォーマットツール:http://tools.jb51.net/code/json
JSONオンラインフォーマットツール:http://tools.jb51.net/code/jsonformat
オンラインXML/JSON相互変換ツール:http://tools.jb51.net/code/xmljson
jsonコードオンラインフォーマット/美化/圧縮/編集/変換ツール:http://tools.jb51.net/code/jsoncodeformat
オンラインjson圧縮/エスケープツール:http://tools.jb51.net/code/json_yasuo_trans
さらに、C#については、「C#文字列操作テクニックまとめ」、「C#よくあるコントロール使い方チュートリアル」、「WinFormコントロール使い方まとめ」、「C#プログラム設計のスレッド使用テクニックまとめ」、「C#中XMLファイル操作テクニックまとめ」、「C#データ構造とアルゴリズムチュートリアル」、「C#配列操作テクニックまとめ」および「C#オブジェクト向けプログラミング入門チュートリアル」
本稿で述べたことが皆さんのC#プログラム設計に役立つことを願っています.