将JSON对象数组转换为.NET对象

17 浏览
0 Comments

将JSON对象数组转换为.NET对象

我有一个大对象要返回,但我只需要其中的一小部分数据。我看了这个例子:这里。我基本上想做同样的事情,只是问题是我会有一个"error"对象的数组。

所以,它会像这样:

{

"short": {

"original": "http://www.foo.com/",

"short": "krehqk",

"error": [

{

"code": 0,

"msg": "No action taken"

},

{

"code": 0,

"msg": "No action taken"

}

]

}

}

有没有一种简单的方法可以使用JObject.Parse或甚至是Linq to JSON来实现这一点?我是不是最好使用JsonConvert.DeserializeObject,只是不包括我在创建的.NET对象中不需要的属性/对象?

0
0 Comments

问题的出现原因是目标类型(即被反序列化的类型)具有名为error的List<>或数组属性。解决方法是使用JavaScriptDeserializer或Json类进行反序列化,并避免使用Linq以减少不必要的开销。如果只想反序列化对象的一部分,可以在反序列化之前对JSON源进行一些基本的字符串操作,例如在例子中,可以搜索"error"和其匹配的闭合']'之间的内容,并从JSON字符串中移除它。

0
0 Comments

问题的出现原因是作者想要将一个JSON数组转换为.NET对象,但不清楚如何实现。

解决方法是使用Linq to JSON库。首先,作者使用JObject.Parse方法将JSON字符串解析为JObject对象。然后,作者创建了一个名为Shortie的.NET对象,并使用JObject对象的索引器来获取JSON中的值,并将其赋给.NET对象的属性。对于包含在JSON数组中的对象,作者使用ToList和Select方法将其转换为.NET对象列表。

最后,作者使用断言来验证.NET对象是否成功创建,并检查列表中的元素数量是否正确。

0