Serialization JSon.NET反序列化对象<;列表<;T>&燃气轮机;不返回列表也不给出错误
我一直在使用Json.NET库及其反序列化对象方法。文档不太清楚这里会发生什么,所以如果有人能解释如何将JSON反序列化到用户对象列表中,我将不胜感激 我正在尝试反序列化这个JSONSerialization JSon.NET反序列化对象<;列表<;T>&燃气轮机;不返回列表也不给出错误,serialization,json.net,Serialization,Json.net,我一直在使用Json.NET库及其反序列化对象方法。文档不太清楚这里会发生什么,所以如果有人能解释如何将JSON反序列化到用户对象列表中,我将不胜感激 我正在尝试反序列化这个JSON [ {"userid":"0", "listid":1, "lastname":"Mann", "inplace":true, "xpos":428, "ypos":111 }, {"userid":"1", "listid":1,
[
{"userid":"0",
"listid":1,
"lastname":"Mann",
"inplace":true,
"xpos":428,
"ypos":111
},
{"userid":"1",
"listid":1,
"lastname":"Parker",
"inplace":true,
"xpos":334,
"ypos":154
},
{"userid":"2",
"listid":1,
"lastname":"Terry",
"inplace":true,
"xpos":513,
"ypos":160
}
]
进入用户对象
[JsonObject(MemberSerialization.OptIn)]
public class User
{
[JsonProperty(PropertyName = "userid")]
public string userid { get; set; }
[JsonProperty(PropertyName = "listid")]
public int listid { get; set; }
[JsonProperty(PropertyName = "lastname")]
public string lastname { get; set; }
[JsonProperty(PropertyName = "inplace")]
public bool inplace { get; set; }
[JsonProperty(PropertyName = "xpos")]
public int xpos { get; set; }
[JsonProperty(PropertyName = "ypos")]
public int ypos { get; set; }
public User()
{
}
}
使用
我做错了什么?如何将其反序列化到用户列表中?我发现了问题所在。NET将我的整数从JSon反序列化为Int64,而不是Int32,因此我将其改为long,并且一切都按照它应该的方式工作
有没有办法指定我希望属性反序列化为int?此时您可能已经解决了问题,但如果有人偶然发现这一点,可能会有所帮助 我正在使用Json.net库对自定义复杂层次对象进行反序列化。我有几个转换器可以将Json转换为c#对象 您可以使用JSONConvertAttribute强制转换属性的返回类型
[JsonConverter(typeof(Int32))]
public int xpos { get; set; }
如果要返回自定义反序列化对象,可以编写自己的转换器,Json.net将使用此自定义转换器强制转换/转换反序列化对象
Sanjay Zalke我也有同样的问题,那是因为我的类中没有默认构造函数(带空参数的构造函数)我也没有T的列表,没有错误,只有空结果:
List<SomeClass> obj = JsonConvert.DeserializeObject<List<SomeClass>>(jsonstring);
public class SomeClass
{
public string SomeProp {get;set;}
(...)
}
List obj=JsonConvert.DeserializeObject(jsonstring);
公共类
{
公共字符串SomeProp{get;set;}
(...)
}
对我来说,以下是解决办法。我只能猜测解释,因此我认为您最好只使用代码:
SomeClassList obj = JsonConvert.DeserializeObject<SomeClassList>(jsonstring);
public class SomeClass
{
public string SomeProp {get;set;}
(...)
}
public class SomeClassList
{
public List<SomeClass> SomeClass {get;set;}
}
SomeClassList obj=JsonConvert.DeserializeObject(jsonstring);
公共类
{
公共字符串SomeProp{get;set;}
(...)
}
公共类列表
{
公共列表SomeClass{get;set;}
}
希望能有帮助。
(如果没有,祝你好运,在搜索时整理出所有该死的json“空设置”内容-。-)谢谢你展示你的工作。帮助我解决json问题!:)非常感谢,它解决了我的问题DJan的答案正好提供了您所需要的,从那里您可以使用
int.Parse(StringValue)
或int.TryParse(StringValue)
来获取int值。
[JsonConverter(typeof(Int32))]
public int xpos { get; set; }
List<SomeClass> obj = JsonConvert.DeserializeObject<List<SomeClass>>(jsonstring);
public class SomeClass
{
public string SomeProp {get;set;}
(...)
}
SomeClassList obj = JsonConvert.DeserializeObject<SomeClassList>(jsonstring);
public class SomeClass
{
public string SomeProp {get;set;}
(...)
}
public class SomeClassList
{
public List<SomeClass> SomeClass {get;set;}
}