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