【发布时间】:2016-05-02 20:15:26
【问题描述】:
我返回了以下 JSON 字符串,我正在尝试反序列化,但我在填充对象属性的值时遇到问题。
这是返回的 JSON 字符串:
"{\"ClientData\":[{\"clientID\":9999999,\"userID\":123,\"authID\":\"8a20627be9ec4c608f4c609a24e74174\"}]}"
现在,我通过以下方式指定了我的 ClientData 类:
public class ClientData
{
[JsonProperty("clientID")]
public long? ClientID { get; set; }
[JsonProperty("userID")]
public int? UserID { get; set; }
[JsonProperty("authID")]
public string AuthID { get; set; }
}
我在转换中做错了什么?我认为它就像指定一样简单:
var result = JsonConvert.DeserializeObject<ClientData>(auth);
但是,这不会产生任何结果。我认为问题可能在于 JSON 字符串的构造方式,即为对象定义的属性。
有人可以帮我指出正确的方向吗?
谢谢
【问题讨论】:
-
在您的 JSON 中,ClientData 是一个数组(集合)而不是单个对象,但您正在反序列化,就好像它是一个对象一样。 “[]”是死赠品
-
如果我使用
- > 它会爆炸吗?我认为这可能也是如此,但使用 List 也不起作用。它声明“无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[AerosExpress.Adjuster.Demo.DataClasses.ClientData]',因为该类型需要正确反序列化的 JSON 数组(例如 [1,2,3])。”
-
创建一个具有 1 个属性的顶级类,该属性是一个列表
并序列化到该顶级类。 -
如果您将课程更改为 public class SomeClass { public List
ClientData {get;set;}}。并且做 ,你应该得到对象 -
@NathanRaley 到目前为止你提供的内容我会更改序列化
标签: c# json json.net deserialization json-deserialization