答案 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;
我希望你的问题得到解决。