【问题标题】:Deserializing JSON and access to elements反序列化 JSON 和访问元素
【发布时间】:2020-03-03 13:54:41
【问题描述】:

我有以下代码:

dynamic stuff = JsonConvert.DeserializeObject("{ 'Name': 'Jon Smith', 'Address': ['A', 'B', 'C'], 'Age': 42 }");
var name = stuff.Name;
MessageBox.Show(name); // print Jon Smith

问题是我不知道如何访问“地址”。所以我想在 foreach 循环中打印“A”然后“B”然后“C”。

【问题讨论】:

  • 与您访问 Name 的方式相同:var address = stuff.Address;
  • 这不是格式正确的 JSON 字符串。
  • @LopDev 我想这只是一个错误输入的例子
  • 我想这个人在发布到 SO 之前甚至没有尝试查看代码,在发布之前甚至没有尝试任何东西

标签: c# .net json json.net


【解决方案1】:

您可以对Name 属性使用相同的方法,然后迭代Address 值,因为它是一个数组

var address = stuff.Address;
foreach (var item in address)
{
    Console.WriteLine(item);
}

【讨论】:

  • 感谢它在 console.WriteLine() 上运行良好,但在 Messagebox.show() 上运行良好。所以我将代码更新为 Messagebox.Show(item.ToString());
【解决方案2】:

这是一个简单的解决方案,可以在很多项目中为您提供帮助。

{
  "Name": "Jon Smith",
  "Address": 
  [
    "A",
    "B",
    "C"
  ],
  "Age": "42"
}

您必须为您的项目创建一个类。

public class JSONClass
{
   public string Name { get; set; }
   public string[] Address { get; set; }
   public string Age { get; set; }
}

然后你必须制作一个列表来保存你的物品:

public class ItemsList
{
   public List<JSONClass> JsonItems { get; set;}  
}

然后您可以简单地检索您的项目。

ItemsList itemsList = new ItemsList();

itemsList.JsonItems = JsonConvert.DeserializeObject<ItemsList>("yourAPIResponse").JsonItems ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多