WPF - Json.NET:如何从 Json 反序列化多个对象并将其放入列表中?

Posted

技术标签:

【中文标题】WPF - Json.NET:如何从 Json 反序列化多个对象并将其放入列表中?【英文标题】:WPF - Json.NET: How do I deserialize multiple objects from Json and put it in an List? 【发布时间】:2021-11-11 18:45:43 【问题描述】:

文件:data.json:

[
  
    "Items": [
      
        "Name": "Item 0"
      ,
      
        "Name": "Item 1"
      ,
      
        "Name": "Item 2"
      
    ] 
  
]

类:

public partial class ItemHandler : Page

    string itemsJson;
    public ItemHandler()
    
        InitializeComponent();

        itemsJson = JsonHandler.ReadItems();

        foreach (var item in collection)
        
            // ???
        
    


public class Item

    public string Name  get; set; 

我需要按名称从字符串列表中获取每个项目,但我不知道如何逐个反序列化,我对 Json.NET 反序列化教程感到困惑。

【问题讨论】:

如果使用 Visual Studio,您可以使用特殊粘贴。将json复制到剪贴板,然后使用Edit/Paste Special/Paste JSON as Classes 【参考方案1】:

试试这个

void Main()

    var json ="[\"Items\":[\"Name\":\"Item 0\",\"Name\":\"Item 1\",\"Name\":\"Item 2\"]]";

    var jD=JsonSerializer.Deserialize<Root[]>(json);

    foreach (var items in jD)
    
        foreach (var item in items.Items)
        
            Console.WriteLine(item.Name);
        
    



public class Item

    public string Name  get; set; 


public class Root

    public List<Item> Items  get; set; 

【讨论】:

以上是关于WPF - Json.NET:如何从 Json 反序列化多个对象并将其放入列表中?的主要内容,如果未能解决你的问题,请参考以下文章

Json.net 从 HTTPClient 结果反序列化 DateTime

如何使用 NewtonSoft Json.Net 将 Json 字典反序列化为平面类

使用 Json.net 将 JSON 对象反序列化为动态对象

使用 JSON.NET 反序列化 DateTime 时如何保留时区? [复制]

如何使用 Json.NET 反序列化高精度十进制值?

如何从 JSON.NET 的 JsonArray 中提取单个数组成员?