我正在从一个类似以下内容的http请求中收到一个Json字符串:
I'm receiving a Json string back from a http request that looks something like this:
{ "info": [ { "calls":0, "errors":"[error1, error2, error3]", "messages":0, "mail":3 } ], "received":5, "valid":3 }我要反序列化的实体的结构大致相同
The entity I'm trying to deserialize into is structured about the same
class ResponseEntity { private Info info; private int received; private int valid; [JsonProperty("info")] public Info Info { get { return info; } set { info = value; } } [JsonProperty("valid")] public int valid { get { return valid; } set { valid = value; } } [JsonProperty("received")] public int received { get { return received; } set { received = value; } } public class Info { private int calls; private List<string> errors; private int messages; private int mail; [JsonProperty("calls")] public int Calls { get { return calls; } set { calls = value; } } [JsonProperty("messages")] public int Messages { get { return messages; } set { messages = value; } } [JsonProperty("errors")] public List<string> Errors { get { return errors; } set { errors = value; } } [JsonProperty("mail")] public int Mail { get { return mail; } set { mail = value; } } } }当我遇到异常时尝试反序列化
When I try to deserialize it though I'm getting an exception
ResponseEntity ent = JsonConvert.DeserializeObject<ResponseEntity>(json) as ResponseEntity; Cannot deserialize JSON array into type 'CSharpRestService.ResponseEntity+Info'.有人可以看到我在做什么吗?我以为'errors'json键搞砸了,但是我也尝试了一个字符串数组.
Can anybody see what I'm doing wrong? I'm thinking the 'errors' json key is messing things up, but I also tried a string array.
推荐答案我的测试代码无法与嵌套的Info类一起编译(由于属性命名冲突),因此我从ResposeEntity类中将其删除.
My test code would not compile with the nested Info class (due to a property naming conflict) so I removed it from within the ResposeEntity class.
与此同时,我修复了JSON的一些问题(您的信息对象是一个数组,并且您的errors数组中的字符串需要用引号引起来).
Along with this I fixed some issues with your JSON (your info object was an array and the strings in your errors array needed to be in quotes).
请参见下文
JSON
{ info": { "calls":0, "errors":["error1", "error2", "error3"], "messages":0, "mail":3 }, "received":5, "valid":3 }课程
class ResponseEntity { private Info info; private int received; private int valid; [JsonProperty("info")] public Info Info { get { return info; } set { info = value; } } [JsonProperty("valid")] public int Valid { get { return valid; } set { valid = value; } } [JsonProperty("received")] public int Received { get { return received; } set { received = value; } } } public class Info { private int calls; private List<string> errors; private int messages; private int mail; [JsonProperty("calls")] public int Calls { get { return calls; } set { calls = value; } } [JsonProperty("messages")] public int Messages { get { return messages; } set { messages = value; } } [JsonProperty("errors")] public List<string> Errors { get { return errors; } set { errors = value; } } [JsonProperty("mail")] public int Mail { get { return mail; } set { mail = value; } } }测试代码
string json = "{\"info\":{\"calls\":0,\"errors\":[\"error1\", \"error2\", \"error3\"],\"messages\":0,\"mail\":3},\"received\":5,\"valid\":3}"; ResponseEntity ent = JsonConvert.DeserializeObject<ResponseEntity>(json) as ResponseEntity;希望这会有所帮助.
更多推荐
json.net将字符串反序列化为嵌套类
发布评论