2014-11-02 57 views
0

我正在创建vb.net应用程序。我从Google财经获得Json数据。我在解析时遇到问题。问题是: 我举一个例子(不是谷歌)Google财务记录Json解析vb.net

这是类

Public Class MyModel 

    Dim m_tes As String 
    Dim m_client_list As String 

    Public Property type() As String 
     Get 
      Return m_tes 
     End Get 
     Set(ByVal value As String) 
      m_tes = value 
     End Set 
    End Property 

    Public Property client_list() As String 
     Get 
      Return m_client_list 
     End Get 
     Set(ByVal value As String) 
      m_client_list = value 
     End Set 
    End Property 
End Class 

,这是JSON解串器

Dim deserializedProduct As MyModel = JsonConvert.DeserializeObject(Of MyModel)(JSON) 
MsgBox(deserializedProduct.type) 
MsgBox(deserializedProduct.client_list) 

如果我得到一个记录的Json数据,它工作正常 像

dim JSON = {"type":"newModel","client_list":"Joe"} 

该MSGBOX的输出是

newModel,并向

的问题是,如果我得到的Json 的名单,我需要一种方法来拆分此列表likeh如下:

Json = {"type":"clientlist","client_list":"client 1"},{"type":"clientlist","client_list":"client 1"} 
+0

我只是想拆分此字符串 { “类型”: “客户端列表”, “client_list”: “客户端1”},{ “类型”: “客户端列表”, “client_list”: “client 1”} – Mohammad 2014-11-02 21:08:55

+0

为什么不制作另一个包含要分割项目集合的对象,并将*那个*对象传入解串器? – Tim 2014-11-02 22:16:17

+0

这就是我想要的,但如何? – Mohammad 2014-11-02 22:27:33

回答

0

我还没有用JSON做过很多工作,但我认为你可以将一个集合传递给反序列化器来获取一个反序列化对象的集合。

换句话说:

Dim deserializedProduct As List(Of MyModel) = JsonConvert.DeserializeObject(Of List(Of MyModel))(JSON) 

上面的代码相似,你贴什么,不同之处在于使用的List<T>而不是你MyModel对象的单个实例,并与你给DeserializeObject使用的类型它是一个List(Of ModelType)。

请注意,您的MsgBox(deserializedProduct.type)MsgBox(deserializedProduct.client_list)不会在List<T>中显示结果(您将获得类型名称) - 您需要遍历列表。事情是这样的:

For Each Dim model As MyModel In deserializedProduct 
    MsgBox(model.type) 
    MsgBox(model.client_list) 
Next 
+0

这很有帮助,但是我应该在反序列化之前拆分字符串吗? – Mohammad 2014-11-02 23:40:20

+0

如果是,我该如何分割它? – Mohammad 2014-11-02 23:41:09

+0

@ user3471633 - 不,我会留下字符串。当JSON被反序列化时,它应该将它作为'List(Of T)'返回。 – Tim 2014-11-03 00:15:47