因此,请阅读此详细信息以了解更多信息。当我尝试获取数组项目的值时,我在Method not found: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)'.遇到错误。
该数组为:
{
[
{
"GROUP_MOD_ID": "G06",
"ADMIN": 1,
"USERS": 0
}
]
}这是代码片段
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;..。谢谢大家。

发布于 2016-11-19 15:25:29
在这种情况下,我不会使用dynamic。我通常建议在C#中避免使用dynamic。相反,我更喜欢JToken-style方法(在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") );当然,...at是可读性的代价。
发布于 2016-11-19 15:43:50
首先,您的JSON似乎不正确。
正确的JSON:
[{
"GROUP_MOD_ID": "G06",
"ADMIN": 1,
"USERS": 0
}]当你期望这个json时,它会给你数组的数组。
您的代码将是:
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; }
}要反序列化的代码:
SampleClass[] obj_str = JsonConvert.DeserializeObject<SampleClass[]>(json);
int value_admin = obj_str[0].ADMIN;
Console.WriteLine(value_admin);
if (value_admin == 1)
{
}
else
{
}发布于 2016-11-19 15:20:01
只有在使用json as时,代码才能正常工作。
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); https://stackoverflow.com/questions/40689394
复制相似问题