【问题标题】:Deserialize Json file [closed]反序列化Json文件[关闭]
【发布时间】:2015-08-08 13:09:24
【问题描述】:
{
    "Location": "St Kilda", 
    "Name": "Movie Plaza theatre", 
    "Day": ["Sunday","Monday","Tuesday","Wednesday","Tuesday","Friday","Saturday"]
}

我无法反序列化这个 Json。谁能帮帮我?

【问题讨论】:

标签: c# json


【解决方案1】:

如下创建你的json类

public class RootObject
{
    public string Location { get; set; }
    public string Name { get; set; }
    public List<string> Day { get; set; }
}

然后编写如下代码从json中获取数据

JObject json = JObject.Parse(your json string); 
RootObject obj = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(json);

更新:

Console.WriteLine(obj.Location);
Console.WriteLine(obj.Name);

foreach (var d in obj.Day)
{
    Console.WriteLine(d);
}

【讨论】:

  • 是的,它有效。你能告诉我如何显示这个 Json 文件的数据吗?因为我只能显示这个列表的类型。
  • 我找不到你。你想要什么?
  • 我在foreach中使用了console.writeline来显示Json文件中的数据,我可以得到位置和名称的数据,但是我只得到了List的类型而不是这个List中的数据。
  • static void PrintData(List data) { foreach (var item in data) { Console.WriteLine(item.Location + item.Name + item.Day); } }
  • @Sam 我更新了我的答案,请检查。
【解决方案2】:

我认为您可以使用 C# 动态类型使事情变得更简单。这种技术还使重构更简单,因为它不依赖于魔法字符串。

1. JsonConvert.DeserializeObject 使用JsonConvert.DeserializeObject&lt;RootObject&gt;(string json);

在 JSON 2 C# 上创建您的类。怎么样read here

如果 JSON 数据中缺少任何字段,则只需将其保留为 NULL。

2. 使用 Json.NET 反序列化 JSON 也可以阅读how deserializing JSON with Json.NET

3. JsonConvert.Populate 您也可以使用JsonConvert.Populate(json,obj); 即json是json字符串,obj是目标对象

阅读更多关于PopulateObject

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2018-10-03
    • 2022-01-14
    • 2016-09-05
    • 2022-10-23
    • 2021-02-26
    • 2021-01-11
    相关资源
    最近更新 更多