繁体   English   中英

将Json字符串序列化为对象不区分大小写

[英]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);

但是,如果出于某些原因确实要使用JObjectJArray ,则应只使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM