c# - 不使用 json.net 解析 JSON 数组

标签 c# arrays json parsing

我希望从 json 字符串中获取每个“name”属性和“text”属性,并将它们添加到各自的列表中。

JSON:

{
  "buttons": [
    {
      "name": "btnTest1",
      "text": "Click Me1!"
    },
    {
      "name": "btnTest2",
      "text": "Click Me2!"
    },
    {
      "name": "btnTest3",
      "text": "Click Me3!"
    }
  ],
  "width": 400,
  "height": 300
}

当前代码:

List<string> btnName = new List<string>();
List<string> btnText = new List<string>();

public class button
{
    public string name { get; set; }
    public string text { get; set; }
}

public class Mod
{
    public List<button> buttons { get; set; }
    public int width { get; set; }
    public int height { get; set; }
}

var mod = new JavaScriptSerializer().Deserialize<List<Mod>>(json);

            foreach (Mod m in mod)
            {
                foreach (button b in m.buttons)
                {
                    btnName.Add(b.name);
                    btnText.Add(b.text);
                }
            }

但是我的 btnName 和 btnText 列表没有被填充。

我尝试了其他几种不同的解决方案,但没有成功。

我做错了什么?

(我不想使用 JSON.net 的原因是这个应用程序必须是独立的,没有任何 dll)

最佳答案

根据您的 json,它实际上代表一个 Mod 对象。也就是说,json 序列化程序应该解析/反序列化 Mod 对象,而不是 Mod 对象列表,您应该在序列化代码中反射(reflect)该对象结构,如下所示。 .

var mod = new JavaScriptSerializer().Deserialize<Mod>(json);

foreach (button b in mod.buttons)
{
     btnName.Add(b.name);
     btnText.Add(b.text);
}

关于c# - 不使用 json.net 解析 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22060805/

相关文章:

arrays - 使用 JPA 1.0 在 NetBeans 主/细节示例表单中显示可变 PostgreSQL 数组

javascript - json 字符串显示在控制台中,但 php 变量 print null

c# - 如何在 C# 中将自定义异常序列化为 json

arrays - 如何在 Rust 中交换多维数组的值?

c# - 词典<>性能

c# - SignalR 在 ASP .Net 5 RC-1 中不工作

c# - 处理链式 linq-to-sql 查询表达式中的空值

php - 从 PHP 数组为下拉选择字段创建嵌套列表

json - 如何在 Django 中序列化(JSON)文件字段

c# - C# 中的(普通)throw 语句会导致异常吗?