首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Json数组访问属性

从Json数组访问属性
EN

Stack Overflow用户
提问于 2020-12-15 10:55:06
回答 2查看 286关注 0票数 0

我有以下数组:

代码语言:javascript
复制
{
   "customizedData":[
      {
         "key":"SubscriptionId",
         "value":"xxxxxxxxxxxxxxxx"
      },
      {
         "key":"OfferId",
         "value":"xxxxxxxxxxxxxx"
      },
      {
         "key":"SubscriptionName",
         "value":"DYNAMICS 365 BUSINESS CENTRAL TEAM MEMBER"
      },
      {
         "key":"Quantity",
         "value":"6"
      },
      {
         "key":"Status",
         "value":"Suspended"
      },
      {
         "key":"PartnerOnRecord",
         "value":"None"
      }
   ]
}

如何访问关键元素:

“键”:"SubscriptionName“

“价值”:“动态365业务中心团队成员”

目前我使用的是:(string)t["customizedData"][2]["value"]

有什么更好的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-16 08:07:46

假设您使用的是Json.net,并且不想为它创建强类型,所以可以使用SelectToken与JSONPath

代码语言:javascript
复制
t.SelectToken("$.customizedData[?(@.key == 'SubscriptionName')].value").ToString();
票数 1
EN

Stack Overflow用户

发布于 2020-12-16 13:04:02

如果您正在使用Newtonsoft.Json nuget,则可以使用助手函数来完成这一操作。首先使用var jo = JObject.Parse(jsonContent);解析并传递给助手函数GetValueFromJson(jo, "SubscriptionName", "customizedData"),使用这个助手函数:

代码语言:javascript
复制
    private string GetValueFromJson(JObject jo, string key, string rootKey)
    {
        var value = jo[rootKey].Children()
                                        .Where(i => i["key"].ToString() == key)
                                        .Select(i => i["value"].ToString())
                                        .FirstOrDefault();
        return value;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65304471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档