使用JSON.NET在C#中进行轻松的JSON反序列化

本文关键字:JSON 反序列化 NET 使用 | 更新日期: 2023-09-27 18:25:44

使用JSON.NET在C#中反序列化此JSON最简单的方法是什么?

{
"serNo":{
            "A4":{
                    "vol":[["0","100","0,1"],["0","n","0"]],
                    "fix":"900"
                    },
            "A3":{
                    "vol":[["0","200","0,5"],["0","n","0"]],
                    "fix":"700"
                    }
        }
}

要创建单独的类还是作为集合?

EDIT:将有多个"serNo"属性。

使用JSON.NET在C#中进行轻松的JSON反序列化

在我看来,反序列化任何JSON最简单的方法是使用JSON.NET库。另请参阅http://json.codeplex.com.

编辑:另请参阅关于堆栈溢出的其他问题:如何使用JSON.NET进行反序列化?

您可以在轻量级JavaScriptSerializer中使用内部版本要序列化/反序列化的类不需要任何属性

它还可以处理匿名类型

序列化:

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var objectAsJsonString = serializer.Serialize(objectToSerialize);

反序列化:

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
SomeClass deserializedObject = serializer.Deserialize<SomeClass>(objectToDeserialize);

以下是早期相关问题/答案的链接:在asp.Net 中将JSON转换为.Net对象时出错

好的,我通过创建这个类解决了JSON.NET的问题:

class Counter
{
   public double[][] vol { get; set; }
   public double fix { get; set; }
}

使用以下表达式反序列化JSON:

Dictionary<string, Dictionary<string, Counter>> counters = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, Counter>>>(arg.Args[7]);

其中arg。Args[7]是JSON。

查看json.org 上的C#部分

请参阅Darin的回答。

我认为您可以很容易地修改提供的源代码以满足您的需求。这是.NET框架(System.Web.Script.Serialization)内置的,因此不存在外部依赖关系。