繁体   English   中英

使用JSON.NET在C#中进行无痛JSON反序列化

[英]Painless JSON deserialization in C# using JSON.NET

使用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"
                    }
        }
}

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

编辑:将有多个“ serNo”属性。

我认为,反序列化任何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#部分

参见达林的答案

我认为您可以轻松地修改提供的源代码来满足您的需求。 它内置于.NET框架( System.Web.Script.Serialization )中,因此没有外部依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM