【问题标题】:how to loop over array of objects in c#如何在c#中循环对象数组
【发布时间】:2015-05-11 08:57:45
【问题描述】:

我有以下 json。我想遍历它并获取 a 和 b 的值,以便我可以将它设置在其他地方。谁能告诉我如何在c#中做到这一点? json 是 --

{
    "_id": "12345",
    "r": [
        "my-user",
        "college-student"
    ],
    "list": [
        {
            "a": "CSE",
            "b": "DataBase"
        },
        {
            "a": "IT",
            "b": "ComputerNetwork"
        }
    ]
}

【问题讨论】:

  • 首先将这个 JSON 反序列化为一些可读的对象,然后你可以迭代它的长度。
  • @anonyms a 和 b 总是“仅”在列表部分?另外,您如何希望将对象作为字符串列表返回,......?
  • 请注意,您不需要为此自定义类 - JSON.Net 的 LINQ to JSON 非常适合这类事情。当然,如果你想用其他东西来表示对象,那么创建一个类绝对是有用...
  • 我使用字典获取这些数据。内部静态 Dictionary userData = null;我做了一些http调用,userdata是必需的json。我正在使用 Newtonsoft 进行 json 转换,但到目前为止还没有运气..

标签: c#


【解决方案1】:

从 nuget 安装 json.net 并使用此代码获取 a 和 b

        dynamic res = JObject.Parse(json);
        List<dynamic> ls =JsonConvert.DeserializeObject<List<dynamic>>( res.list.ToString());
        ls.ForEach(item=> Console.WriteLine(item.a+" "+item.b));

既然我们喜欢一个班轮,只需执行以下操作

List<dynamic> res = JsonConvert.DeserializeObject<List<dynamic>>(((dynamic)(JObject.Parse(json))).list.ToString());

如果您想为 json 生成类,请使用此网站http://json2csharp.com/

你会得到的课程是

public class List
{
    public string a { get; set; }
    public string b { get; set; }
}

public class RootObject
{
    public string _id { get; set; }
    public List<string> r { get; set; }
    public List<List> list { get; set; }
}

并使用反序列化:

var res = JsonConvert.DeserializeObject<RootObject>(json);

【讨论】:

  • 如果你知道传入的数据的结构,你可以制作一个对应的C#类并反序列化到使用动态保存。即 JsonConvert.DeserializeObject。如果您不想使用 Json.Net,System.Web.Extensions (msdn.microsoft.com/en-us/library/…) 中还有一个 JavaScriptSerializer。由于@Coder1409 是正确的,因此对此答案表示赞成。
  • 他只是在寻找将 a 和 b 的值保存在其他地方我看不到在这里使用类的重要性,无论哪种方式我都会添加类解决方案
  • foreach (KeyValuePair entry in App.userData) { if (entry.Key == "mnu") { //this.MenuItems.Add({branchtext = Value of a } ) } }
  • foreach (KeyValuePair entry in App.userData) { if (entry.Key == "list") { //this.MenuItems.Add({branchtext = Value of a } ) } }
  • 你想在这里做什么??
猜你喜欢
  • 1970-01-01
  • 2021-08-17
  • 2019-02-12
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2017-02-04
  • 2012-06-09
相关资源
最近更新 更多