Json反序列化List VB.NET

时间:2015-05-06 21:50:12

标签: json vb.net deserialization json-deserialization

我无法反序列化具有数组的JSON文件。如果我将其中一个人带入自己的JSON字符串并将其放入People类,我可以让它工作正常。但是,当我执行多个时,它不起作用,并且每次只返回一个空对象。我需要使用多个字符串才能更改JSON,因为这是我收到的。 DataContract或DataMember中有什么东西在调用这些时我做错了吗?

使用People class工作JSON字符串= {“”name“”:“”J.Lane“”,“”att“”:1}

不使用带有PeopleList的JSON字符串class = {“”people“”:{“”00-0029619“”:{“”name“”:“”J.Lane“”,“”att“”:1} “” 00-0021206 “”:{ “” 名称 “”: “” J.Street “”, “” ATT “”:3}}}

T

1 个答案:

答案 0 :(得分:0)

你的json的形式不是List(Of People)它是Dictionary(Of String, People)

基本上这个; Public People_List As List(Of People)

需要; Public People_Dict As Dictionary(Of String, People)

如果你将这种类型传递给你的反序列化方法,一切都应该可以正常工作(或者至少它会超过你当前的错误)。

编辑:下一个错误;

此;

<DataContract()> _
Public Class People
    <DataMember(Name:="name")> _
    Public Person_Name As String

    <DataMember(Name:="att")> _
    Public Attempts As String
End Class

需要      _     公共阶层人          _         Public Person_Name As String

    <DataMember(Name:="att")> _
    Public Attempts As Int
End Class

因为没有引用att的值,所以它显然不是字符串。我应该注意到昨天。无论如何,如果您不熟悉将json映射到.NET中的对象,我可能会建议您熟悉这里的一些材料http://www.json-schema.org/

如果你能流利地理解json的模式,那么就可以更容易地说出“这是一个dictionarys字典,其中包含了应该具有这些属性的对象”或者其他什么。