将JSON反序列化为c#对象
我试图将上面的json反序列化到我的对象中,但是计数部分没有得到反序列化。我的目标是将JSON反序列化为c#对象,c#,asp.net,json,deserialization,json-deserialization,C#,Asp.net,Json,Deserialization,Json Deserialization,我试图将上面的json反序列化到我的对象中,但是计数部分没有得到反序列化。我的目标是 {"facet_counts":{ "facet_queries":{}, "facet_fields":{}, "facet_dates":{}, "facet_ranges":{ "createdat":{ "counts":[ "2015-05-17T00:00:00Z",155, "2015-05-18T00:00:00Z",162,
{"facet_counts":{
"facet_queries":{},
"facet_fields":{},
"facet_dates":{},
"facet_ranges":{
"createdat":{
"counts":[
"2015-05-17T00:00:00Z",155,
"2015-05-18T00:00:00Z",162,
"2015-05-19T00:00:00Z",200,
"2015-05-20T00:00:00Z",218,
"2015-05-21T00:00:00Z",181,
"2015-05-22T00:00:00Z",137],
"gap":"+1DAY",
"start":"2015-05-17T00:00:00Z",
"end":"2015-05-23T00:00:00Z"}}}}
公共类FaceCounts
{
公共类
{
公共类CreatedAt
{
公共列表计数{get;set;}
公共类计数
{
公共字典计数{get;set;}
}
}
public CreatedAt CreatedAt{get;set;}
}
公共方面\范围方面\范围{get;set;}
}
我还尝试删除公共字典计数{get;set;}
,但仍然失败。
我的反序列化代码是
public class FacetCounts
{
public class Facet_Ranges
{
public class CreatedAt
{
public List<Counts> counts { get; set; }
public class Counts
{
public Dictionary<string, int> count { get; set; }
}
}
public CreatedAt createdat { get; set; }
}
public Facet_Ranges facet_ranges { get; set; }
}
objObject=JsonConvert.DeserializeObject(json);
任何帮助都将不胜感激 用
{}
objObject = JsonConvert.DeserializeObject<FacetCounts>(json);
这不是有效的json-您的count对象需要位于{大括号}中 仅供参考-您还可以使用json2csharp.com自动生成要反序列化的c-sharp对象,这也会突出显示类似的问题。
公共类FaceCounts
"facet_counts":{
"facet_queries":{},
"facet_fields":{},
"facet_dates":{},
"facet_ranges":{
"createdat":{
"counts":[
{"2015-05-17T00:00:00Z",155},
{"2015-05-18T00:00:00Z",162},
{"2015-05-19T00:00:00Z",200},
{"2015-05-20T00:00:00Z",218},
{"2015-05-21T00:00:00Z",181},
{"2015-05-22T00:00:00Z",137}],
"gap":"+1DAY",
"start":"2015-05-17T00:00:00Z",
"end":"2015-05-23T00:00:00Z"}}}
{
公共类
{
公共类CreatedAt
{
公开名单计数
{
得到
{
返回计数
.SelectMany(pair=>new[]{pair.Key,pair.Value.ToString()})
.ToList();
}
设置
{
var pairs=新字典();
对于(变量i=0;i
来自
public类Createdat
{
公共列表计数{get;set;}
公共字符串间隔{get;set;}
公共字符串开始{get;set;}
公共字符串结束{get;set;}
}
这对我很有效您的JSon无效。
错误是在完整的JSon字符串{}周围缺少大括号
以下是一个可用的JSon字符串:
public class Createdat
{
public List<object> counts { get; set; }
public string gap { get; set; }
public string start { get; set; }
public string end { get; set; }
}
我用于验证您的JSon,并且一个错误一个错误地修复了错误。
我不确定您的C#代码反序列化JSon是否正确,因此我建议您使用,例如,为了在C#中创建JSon对象。然后你可以修复变量名等。但是我从外部对象获取json,我如何修改它返回的方式?你不能,但你可能应该把它放在问题中。谢谢你的努力,伙计,但我找到了一个更简单的方法。这是一个有效的json,你提到的站点,我把代码放在那里,它给了我输出。谢谢你的链接。很明显,在我吃早餐的时候,有上百万条回复。非常感谢你的努力伙伴,我在Json2Csharp上验证了我的JSON,它给了我正确的输出类。太好了!没问题。=)这是你的答案吗?如果是,请将其标记为答案。如果没有,是否需要更多帮助?=)
public class Createdat
{
public List<object> counts { get; set; }
public string gap { get; set; }
public string start { get; set; }
public string end { get; set; }
}
{
"facet_counts": {
"facet_queries": {},
"facet_fields": {},
"facet_dates": {},
"facet_ranges": {
"createdat": {
"counts": [
"2015-05-17T00:00:00Z",
155,
"2015-05-18T00:00:00Z",
162,
"2015-05-19T00:00:00Z",
200,
"2015-05-20T00:00:00Z",
218,
"2015-05-21T00:00:00Z",
181,
"2015-05-22T00:00:00Z",
137
],
"gap": "+1DAY",
"start": "2015-05-17T00:00:00Z",
"end": "2015-05-23T00:00:00Z"
}
}
}
}