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

时间:2016-11-19 05:00:53

标签: c# arrays json

因此,请阅读此详细信息以获取更多信息。我得到错误 找不到方法:'System.String System.String.Format(System.IFormatProvider,System.String,System.Object)'。当我尝试获取数组项的值。 该数组是: {     [         {             “GROUP_MOD_ID”:“G06”,             “ADMIN”:1,             “用户”:0         }      ] } 这是代码段   dynamic obj_str = JsonConvert.DeserializeObject(obj);                 string value_admin = obj_str [“ADMIN”];                 Console.WriteLine(value_admin);                 if(value_admin ==“1”)                     返回true;                 其他                     返回false; 。谢谢大家。

4 个答案:

答案 0 :(得分:2)

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

JArray array = JArray.Parse( input );
JObject firstObject = (JObject)array.First;
String adminValue = (String)firstObject.GetValue("ADMIN");

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

但如果你确定输入是正确的,你可以将其减少到单行:

String adminValue = (String)( ((JObject)JArray.Parse( input )).First.GetValue("ADMIN") );

......当然是以可读性为代价的。

答案 1 :(得分:2)

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

更正JSON:

namedtuple

当你去掉这个json时,它会给你一个数组数组。

您的代码将是:

[{
"GROUP_MOD_ID": "G06",
"ADMIN": 1,
"USERS": 0
}]

你可以通过这种方式看到这一点。

    dynamic obj_str = JsonConvert.DeserializeObject(json);
    string value_admin = obj_str[0].ADMIN;
    Console.WriteLine(value_admin);
    if (value_admin == "1")
    {
    }
    else
    {
    }

反序列化代码:

public class SampleClass
{
    public string GROUP_MOD_ID { get; set; }
    public int ADMIN { get; set; }
    public int USERS { get; set; }
}

答案 2 :(得分:0)

只有当json为

时,您的代码才有效

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

    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); 

答案 3 :(得分:0)

首先,您要为Deserialize Object制作模型。

你的模特就是这样。

public class Test_Model
{
    [JsonProperty("GROUP_MOD_ID")]
    public string GROUP_MOD_ID { get; set; }
    [JsonProperty("ADMIN")]
    public int ADMIN { get; set; }
    [JsonProperty("USERS")]
    public int USERS { get; set; }
}

并且在写完这段代码之后:

        var obj_str = JsonConvert.DeserializeObject<Test_Model>(obj);
        int value_admin = obj_str.ADMIN;
        Console.WriteLine(value_admin);
        if (value_admin == 1)
            return true;
        else return false;

我希望你的问题得到解决。