【问题标题】:How can i access fields of anonymous typed JArray in C#?如何在 C# 中访问匿名类型化 JArray 的字段?
【发布时间】:2020-02-11 14:39:44
【问题描述】:
string sampleString = "[{\"id\":\"1\",\"status\":302},{\"id\":\"2\",\"status\":302},{\"id\":\"3\",\"status\":302},{\"id\":\"4\",\"status\":302}]";     
JArray json = JArray.Parse(sampleString );
TempValue t;
foreach(JObject obj in json)
{
t = new TempValue {
id =//id of json,
status=//state of json
};
}

我想访问 json 匿名对象的值以分配给 t 对象。

【问题讨论】:

标签: c# .net-core types anonymous-types


【解决方案1】:

最好使用类型化的对象来避免键入错误。在这种情况下,使用 json 字符串的结构创建一个类,如下所示:

   public class StatusObj
   {
     public string id { get; set; }
     public int status { get; set; }
   }

将 json 字符串反序列化为您的类列表,如下所示:

List<StatusObj> obj = JsonConvert.DeserializeObject<List<StatusObj>>(sampleString);

然后你可以像这样遍历列表:

foreach (var item in obj)
 {
   var id = item.id;
   var status = item.status;
 }

整个代码如下所示:

  class Program
{
    static void Main(string[] args)
    {
        string sampleString = "[{\"id\":\"1\",\"status\":302},{\"id\":\"2\",\"status\":302},{\"id\":\"3\",\"status\":302},{\"id\":\"4\",\"status\":302}]";

        List<StatusObj> obj = JsonConvert.DeserializeObject<List<StatusObj>>(sampleString);

        foreach (var item in obj)
        {
            var id = item.id;
            var status = item.status;
        }

    }
}

public class StatusObj
{
    public string id { get; set; }
    public int status { get; set; }
}

注意。需要安装 Newtonsoft.Json 包。您还可以将任何 json 转换为类here

【讨论】:

  • "如果你能把这个问题标记出来,它将对更多的观众更有益" - 这有点好笑
【解决方案2】:

索引器

foreach(JObject obj in json)
{
    t = new TempValue {
    id = obj["id"].ToString() ,
      ...   
};

Object.Item Property (String)

获取或设置具有指定属性名称的 JToken。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多