首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JSON数组c#中获取项的值?

问如何在JSON数组c#中获取项的值?
EN

Stack Overflow用户
提问于 2016-11-19 13:00:53
回答 4查看 406关注 0票数 1

因此,请阅读此详细信息以了解更多信息。当我尝试获取数组项目的值时,我在Method not found: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)'.遇到错误。

该数组为:

代码语言:javascript
复制
{
    [
        {
            "GROUP_MOD_ID": "G06",
            "ADMIN": 1,
            "USERS": 0
        }
     ]
}

这是代码片段

代码语言:javascript
复制
  dynamic obj_str = JsonConvert.DeserializeObject(obj);
                string value_admin = obj_str["ADMIN"];
                Console.WriteLine(value_admin);       
                if (value_admin == "1")
                    return true;
                else
                    return false;

..。谢谢大家。

​

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-19 15:25:29

在这种情况下,我不会使用dynamic。我通常建议在C#中避免使用dynamic。相反,我更喜欢JToken-style方法(在Newtonsoft.Json.Linq名称空间中,尽管这并不意味着您必须使用Linq):

代码语言:javascript
复制
JArray array = JArray.Parse( input );
JObject firstObject = (JObject)array.First;
String adminValue = (String)firstObject.GetValue("ADMIN");

在生产环境中,您需要添加输入验证代码,以确保输入JSON数组和对象实际上具有元素和值,并相应地处理这些错误。

但是,如果您确定输入是正确的,则可以将其缩减为一行:

代码语言:javascript
复制
String adminValue = (String)( ((JObject)JArray.Parse( input )).First.GetValue("ADMIN") );

当然,...at是可读性的代价。

票数 2
EN

Stack Overflow用户

发布于 2016-11-19 15:43:50

首先,您的JSON似乎不正确。

正确的JSON:

代码语言:javascript
复制
[{
"GROUP_MOD_ID": "G06",
"ADMIN": 1,
"USERS": 0
}]

当你期望这个json时,它会给你数组的数组。

您的代码将是:

代码语言:javascript
复制
    dynamic obj_str = JsonConvert.DeserializeObject(json);
    string value_admin = obj_str[0].ADMIN;
    Console.WriteLine(value_admin);
    if (value_admin == "1")
    {
    }
    else
    {
    }

您可以通过执行以下操作来查看这一点。

代码语言:javascript
复制
public class SampleClass
{
    public string GROUP_MOD_ID { get; set; }
    public int ADMIN { get; set; }
    public int USERS { get; set; }
}

要反序列化的代码:

代码语言:javascript
复制
    SampleClass[] obj_str = JsonConvert.DeserializeObject<SampleClass[]>(json);
    int value_admin = obj_str[0].ADMIN;
    Console.WriteLine(value_admin);
    if (value_admin == 1)
    {
    }
    else
    {
    }
票数 2
EN

Stack Overflow用户

发布于 2016-11-19 15:20:01

只有在使用json as时,代码才能正常工作。

var obj="{'GROUP_MOD_ID':'G06','ADMIN':10,'USERS':0}";

或者

代码语言:javascript
复制
    var obj="[{'GROUP_MOD_ID':'G06','ADMIN':1,'USERS':0}]";

    dynamic obj_str = JsonConvert.DeserializeObject(obj);
            string value_admin = obj_str[0]["ADMIN"];
            Console.WriteLine(value_admin); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40689394

复制
相关文章

相似问题

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