使用JsonConvert将C#中的JSON转换为Object

时间:2015-07-16 18:44:49

标签: c# json object

我正在尝试将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形成不正确吗?看起来这应该是非常直接的。

2 个答案:

答案 0 :(得分:4)

为什么你不要像这样创建对象并将其去除它

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);

答案 1 :(得分:0)

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

类:

// Bar Chart Animation
    function barChart(){
      $("#demographicsBars li .bar").each( function( key, bar ) {
        var percentage = $(this).data('percentage');

        $(this).animate({
          'height' : percentage + '%'
        }, 1000, function() {
            $('.viewerDemographics #demographicsBars li .bar').css('overflow','inherit');
         });
      });
    };

// Scroll Call Animation

    $(window).scroll(function () {
        $('.viewerDemographics').each(function () {
            var imagePos = $(this).offset().top;
            var imageHeight = $(this).height();
            var topOfWindow = $(window).scrollTop();

            if (imagePos < topOfWindow + imageHeight && imagePos + imageHeight > topOfWindow) {

                barChart();

            } else {


            }
        });
    });

使用JSON的代码:

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; }
}