json.net将字符串反序列化为嵌套类

编程入门 行业动态 更新时间:2024-10-28 05:13:01
本文介绍了json将字符串反序列化为嵌套类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在从一个类似以下内容的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将字符串反序列化为嵌套类

本文发布于:2023-11-17 07:45:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1609349.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:嵌套   字符串   序列   json   net

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!