c# - 在 C# .NET 3.5 中使用 JSON

标签 c# .net json file-io

我找到了一些辅助方法,可以将对象转换为 JSONM 以及将 JSON 转换为对象。现在我正在读取一个看起来像这样的 json 文件:

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

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

最佳答案

您需要使用 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; }
}

这是一个序列化(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;
    }
}

所以把你上面的json传给上面jsonHelper类中的From方法

People peeps = jsonHelper.From<People>(input);

关于c# - 在 C# .NET 3.5 中使用 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4839026/

相关文章:

c# - ASP.NET Web 服务结果、代理类和类型转换

c# - 成员访问中的问号在 C# 中是什么意思?

c# - 使用 CSLA 在 C# .NET 中禁用文本框

.NET:消息队列与直接插入 MongoDB

c# - "Invalid managed/unmanaged type combination."是什么意思?

java - 想要来自 hibernate json 响应的嵌套 json 格式

javascript - Css 在 asp.net c# 中不起作用?

c# - 将属性表单对象复制到另一个对象的扩展方法,第一次尝试

JavaScript - 将 JavaScript 与 HTML 连接起来

javascript - Window.open() 打开通过 json 文件传递​​的 url?