繁体   English   中英

我如何 C# 反序列化 JSON 列表 WinForm Combobox?

[英]how can i C# Deserialize JSON list WinForm Combobox?

在选择组合框 1 中的项目后,我想打印出组合框 2 中选择的数组的内容。

在此处输入图像描述

喜欢这张照片

{
"Movie": [
    "Action",
    {
        "Mad Max": "1979",
        "Terminator": "1984"
    },
    "SF",
    {
        "Star Wars": "1979"
    }
]

}

JSON 文件看起来像这样

class 定义如下:

public class Root
{
    public List<object> Movie { get; set; }
}

但我不知道如何阅读 object 中的内容。

我感谢提供的任何帮助。 提前致谢。

假设Movie属性包含一个模式,其动作类型首先是字典/对象,

  1. 将 JSON 反序列化为Root
  2. 通过将值与所选操作类型匹配来从root.Movie获取索引。
  3. 通过root.Movie中的索引 ( index + 1 ) 将下一项反序列化为Dictionary<string, string>类型。
using System.Collections.Generic;
using System.Text.Json;

Root root = JsonSerializer.Deserialize<Root>(json);
int index = root.Movie.FindIndex(x => x.ToString() == selected);
        
Dictionary<string, string> dict = JsonSerializer.Deserialize<Dictionary<string, string>>(root.Movie[index + 1].ToString());

// Print output
foreach (KeyValuePair<string, string> kvp in dict)
{
    Console.WriteLine($"{kvp.Key}: {kvp.Value}");
}

样品 .NET 小提琴

暂无
暂无

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

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