Serialization JSon.NET反序列化对象<;列表<;T>&燃气轮机;不返回列表也不给出错误

Serialization 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,

我一直在使用Json.NET库及其反序列化对象方法。文档不太清楚这里会发生什么,所以如果有人能解释如何将JSON反序列化到用户对象列表中,我将不胜感激

我正在尝试反序列化这个JSON

[
    {"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;}
}