在C#.NET 3.5中使用JSON

rya*_*zec 2 .net c# file-io json

我找到了一些帮助方法,允许我将对象转换为JSONM和JSON转换为对象.现在我正在读一个看起来像这样的json文件:

/************************************************************************/
/* Coments Here *********************************************************/
/************************************************************************/
//more comments  
[{
  "Id": 1,
  "Name": "HP Up"
},
{
  "Id": 2,
  "Name": "Regeneration"
}]
Run Code Online (Sandbox Code Playgroud)

现在,虽然我可以将JSON转换为表示1对象,但我是否会使用C#.NET 3.5将其转换为多个对象?

小智 8

您需要使用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; }
}
Run Code Online (Sandbox Code Playgroud)

这是一个序列化(To)和反序列化(From)的辅助类

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以把你的json放在上面并将它发送到上面jsonHelper类的From方法

People peeps = jsonHelper.From<People>(input);
Run Code Online (Sandbox Code Playgroud)


Jim*_*hel 5

下载Json.NET.这比我在.NET上看到的任何其他东西都更好地处理JSON.我认为Json序列化器会做你想要的.

另外,请查看右侧的相关问题.我相信你会在那里找到答案.