【问题标题】:Painless JSON deserialization in C# using JSON.NET使用 JSON.NET 在 C# 中进行无痛 JSON 反序列化
【发布时间】:2012-03-13 18:26:41
【问题描述】:

使用 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”属性。

【问题讨论】:

    标签: c# javascript json


    【解决方案1】:

    好的,我通过创建这个类解决了 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。

    【讨论】:

      【解决方案2】:

      您可以使用内置轻量级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);
      

      这里是之前相关问题/答案的链接: Error converting JSON to .Net object in asp.net

      【讨论】:

        【解决方案3】:

        在我看来,反序列化任何 JSON 最轻松的方法是使用 JSON.NET 库。另见http://json.codeplex.com

        编辑: 另请参阅 Stack Overflow 上的其他问题:How to deserialize with JSON.NET?

        【讨论】:

        • 我已经在使用那个库,但我不确定如何反序列化这个库。这有点复杂……至少对我来说。
        【解决方案4】:

        请参阅 Darin 的 answer

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

        【讨论】:

        • 我不需要工具,而是使用 JSON.NET 反序列化给定示例的方法。
        • @dakt 好的,请更新您想要使用 JSON.NET 解决问题的问题。谢谢
        【解决方案5】:

        查看json.org 的 C# 部分

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-26
          相关资源
          最近更新 更多