【问题标题】:How to deserialize with JSON.NET?如何使用 JSON.NET 反序列化?
【发布时间】:2011-06-18 20:00:13
【问题描述】:

如何设置 Newtonsoft Json.net 将此文本反序列化为 .NET 对象?

[
    [
        "US\/Hawaii", 
        "GMT-10:00 - Hawaii"
    ], 
    [
        "US\/Alaska", 
        "GMT-09:00 - Alaska"
    ], 
]

对于加分来说,Json 中这种结构叫什么。我尝试寻找匿名对象,但没有任何运气。

【问题讨论】:

  • 您是在寻找反序列化为自定义对象类型,还是只是一个 JSON“DOM”? DOM 可能要容易得多,因为它不需要对您的 JSON 架构进行任何更改,而“序列化”API 往往更挑剔。
  • DOM 对我来说没问题。

标签: c# json json.net


【解决方案1】:

这个 JSON 字符串(或者几乎,在你修复它并删除尾随逗号后它将是一个有效的 JSON,因为现在它是无效的)表示一个字符串数组的数组。使用 .NET 内置的 JavaScriptSerializer 类可以轻松地将其反序列化为 string[][]

using System;
using System.Web.Script.Serialization;

class Program
{

    static void Main()
    {
        var json = 
@"[
    [
        ""US\/Hawaii"", 
        ""GMT-10:00 - Hawaii""
    ], 
    [
        ""US\/Alaska"", 
        ""GMT-09:00 - Alaska""
    ]
]";
        var serializer = new JavaScriptSerializer();
        var result = serializer.Deserialize<string[][]>(json);
        foreach (var item in result)
        {
            foreach (var element in item)
            {
                Console.WriteLine(element);
            }
        }
    }
}

使用 JSON.NET 可以达到完全相同的结果:

var result = JsonConvert.DeserializeObject<string[][]>(json);

【讨论】:

    【解决方案2】:

    JSON.Net 使用 JArray 来解析这些 - 请参阅:

    【讨论】:

      【解决方案3】:

      要查看详细介绍如何在 .NET 和 JSON 之间进行序列化和反序列化的博文,check this out。我发现它真的很有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-27
        • 2015-02-07
        • 2012-04-09
        • 1970-01-01
        相关资源
        最近更新 更多