2011-01-29 15 views
1

オブジェクトをJSONMおよびJSONに変換できるヘルパーメソッドがいくつか見つかりました。今、私はこのようになりますJSONファイルに読んでいます:私はJSONインクルードは1つのオブジェクトを表し変換することができますがC#.NET 3.5でJSONを操作する

/************************************************************************/ 
/* Coments Here *********************************************************/ 
/************************************************************************/ 
//more comments 
[{ 
    "Id": 1, 
    "Name": "HP Up" 
}, 
{ 
    "Id": 2, 
    "Name": "Regeneration" 
}] 

は今、私は私がC#.NET 3.5で複数のオブジェクトでこれを変換するに行きますか?

答えて

7

System.Runtime.Serialization.Json名前空間にあるDataContractJsonSerializerを使用する必要があります。 [DataContract]属性、[CollectionDataContract]属性を持つコレクションクラス、[DataMember]属性を持つプロパティでクラスをマークします。ここで

[CollectionDataContract] 
public class People : List<Person> 
{ 

} 

[DataContract] 
public class Person 
{ 
    public Person() { } 

    [DataMember] 
    public int Id{ get; set; } 

    [DataMember] 
    public string Name { get; set; } 
} 

は、ヘルパークラスは、だからあなたのJSONは、上記取ると

People peeps = jsonHelper.From<People>(input); 
上jsonHelperクラスのメソッドからに送信(へ)をシリアライズし

using System.Runtime.Serialization; 
using System.Runtime.Serialization.Json; 

public class jsonHelper 
{ 
    public static string To<T>(T obj) 
    { 
     string retVal = null; 
     System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType()); 
     using (MemoryStream ms = new MemoryStream()) 
     { 
     serializer.WriteObject(ms, obj); 
     retVal = Encoding.Default.GetString(ms.ToArray()); 
     } 

     return retVal; 
    } 

    public static T From<T>(string json) 
    { 
     T obj = Activator.CreateInstance<T>(); 
     using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json))) 
     { 
     System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType()); 
     obj = (T)serializer.ReadObject(ms); 
     } 

     return obj; 
    } 
} 

(から)デシリアライズすることです

+0

これは私がすでに持っているものですが、与えられた例のようにJSONの複数のオブジェクトではうまくいかないでしょう。私は、複数のオブジェクトを持つJSONオブジェクトを読み込み、それらをリストに入れたいと思っています。ファイルから複数のオブジェクトにJSON文字列を分割する方法がわかりません。 – ryanzec

+0

ここの例では、JSONをタイプPersonのオブジェクトのリストにデシリアライズします。次に、コレクションを反復し、各オブジェクトを個別に検査できます。 –

5

Json.NETをダウンロードしてください。 JSONは、.NETで見たこと以外の何ものよりも優れています。私はJsonのシリアライザがあなたが求めていることをやると思います。

また、右側にある関連する質問をご覧ください。私はあなたがそこに答えを見つけるだろうと信じています。

関連する問題