使用JsonConvert将c#中的JSON转换为对象

本文关键字:转换 对象 JSON 中的 JsonConvert 使用 | 更新日期: 2023-09-27 18:03:01

我试图反序列化我的JSON符号到一个对象。我得到这个错误:{"Newtonsoft.Json.Linq。JProperty'不包含'id'的定义"}

这是我在json3中表示的JSON:

string json3 = "{'Rows':[{'id':'1017','ischecked':'true'},{'id':'1018','ischecked':'false'}]}"
下面是我的c#代码:
dynamic dynJson = JsonConvert.DeserializeObject(json3);
foreach (var item in dynJson)
{
    Console.WriteLine("{0} {1}'n", item.id, item.ischecked);
}

我的JSON格式不正确吗?这看起来应该很直接。

使用JsonConvert将c#中的JSON转换为对象

为什么不像这样创建对象并描述它

public class Row
{
    public int ID { get; set; }
    public bool ischecked { get; set; }
}
List<Row> list = JsonConvert.DeserializeObject<List<Row>>(stringofjson);

如果它不工作,试试这个方法

public class RowJson
{
   [JsonProperty("Rows")]
   public Row Row { get; set; }
}
public class Row
{
    public int ID { get; set; }
    public bool ischecked { get; set; }
}
List<RowJson> list = JsonConvert.DeserializeObject<List<RowJson>>(stringofjson);

谢谢Pranay,这是我最后使用的。你离我很近,让我走上了正确的道路。下面的代码适用于两种格式的JSON,每种格式都在变量json2和json3中表示。

类:

using Newtonsoft.Json;
public class CheckBoxResultsJson
{
    public List<boCheckBoxResult> checkboxes { get; set; }
}
public class boCheckBoxResult
{
    public int id { get; set; }
    public bool ischecked { get; set; }
}

使用JSON的代码:

        //string json2 = "{'"checkboxes'":[{'"id'":'"1018'",'"ischecked'":'"true'"},{'"id'":'"1019'",'"ischecked'":'"true'"},{'"id'":'"1020'",'"ischecked'":'"true'"},{'"id'":'"1017'",'"ischecked'":'"true'"},{'"id'":'"1021'",'"ischecked'":'"true'"},{'"id'":'"18'",'"ischecked'":'"true'"}]}";
        string json3 = "{'checkboxes':[{'id':'1017','ischecked':'true'},{'id':'1018','ischecked':'false'}]}";

        //CheckBoxResultsJson checkBoxResultJson = (CheckBoxResultsJson)JsonConvert.DeserializeObject(json2, typeof(CheckBoxResultsJson));
        CheckBoxResultsJson checkBoxResultJson = (CheckBoxResultsJson)JsonConvert.DeserializeObject(json3, typeof(CheckBoxResultsJson));
        Console.WriteLine(checkBoxResultJson.checkboxes.Count.ToString());
        foreach(boCheckBoxResult x in checkBoxResultJson.checkboxes)
        { 
            int id = x.id;
        }