[英]Serialize Json string to object caseinsensitive
我正在尝试读取不区分大小写的Json字符串
dynamic result = JsonConvert.DeserializeObject(response);
for (int i = 0; i < ((Newtonsoft.Json.Linq.JArray)result).Count; i++)
{
Group.id = (string)result[i]["id"];
Group.name = (string)result[i]["GroupName"];
...
...
我希望标签不区分大小写。 我该如何实现? 我努力了
Group.id = (string)((JObject )result[i].GetValue("ID",StringComparison.CurrentCultureIgnoreCase));
但是我得到一个错误“ Newtonsoft.Json.Linq.JObject”不包含“ GetValue”的定义。
杰森是:
{[
{
"id": "1",
"State": "ON",
"Override": "ON",
"Lightoutput": 80,
"GroupName": "new name for group 1"
},
{
"id": "2",
"State": "ON",
"Override": "OFF",
"Lightoutput": 100,
"GroupName": "group 2"
}
]}
看来您有一个Group
类。 假设它看起来像这样:
public class Group
{
public int Id { get; set; }
public string State { get; set; }
public string Override { get; set; }
public int LightOutput { get; set; }
public string GroupName { get; set; }
}
您可以直接将数组反序列化为List<Group>
:
var groups = JsonConvert.DeserializeObject<List<Group>>(json);
但是,如果出于某些原因确实要使用JObject
和JArray
,则应只使用JArray.Parse
并避免使用dynamic
:
JArray arr = JArray.Parse(json);
for(int i = 0; i < arr.Count; i++)
{
var obj = arr[i].ToObject<JObject>();
int id = (int)obj.GetValue(
"ID", StringComparison.CurrentCultureIgnoreCase);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.