2014-02-11 30 views
0

我正在尝试使用JSON.NET处理this json documentJSON.net - 使用VB.NET无法遍历结果

随着VB.NET代码:

 Dim o As JObject = JObject.Parse(json) 
     Dim results As List(Of JToken) = o.Children().ToList 

     Dim count As Integer = 0 
     For Each item As JProperty In results 
      Dim snippet As String = String.Empty 
      Dim URL As String = String.Empty 
      Dim source As String = String.Empty 
      item.CreateReader() 
      Select Case item.Name 
       Case "response" 
        snippet = item.Last.SelectToken("docs").First.Item("snippet").ToString 
        URL = item.Last.SelectToken("docs").First.Item("web_url").ToString 
        source = ControlChars.NewLine & "<font size='2'>" & item.First.SelectToken("docs").First.Item("source").ToString & "</font>" & ControlChars.NewLine 
        tbNews.Text &= "<a href=" & URL & " target='new'>" & snippet & "</a> - " & source 
      End Select 
     Next 

我只接收第一文件作为结果。可有人建议,我怎么能得到1 - 第N个文件作为一个完整的清单?

+0

你是否首先创建了一个具有所有适当属性的JToken类? – Lopsided

+0

SteveMcG 1)你的JSON粘贴[本网站](http://json2csharp.com/),它会创建C#类2)复制这些类并粘贴到[本站](http://www.developerfusion.com /工具/转换/ CSHARP到VB)现在你有VB类3)使用'JsonConvert.DeserializeObject'反序列化到'RootObject'。现在你有一个编译时安全类 –

+0

谢谢!很有帮助! – SteveMcG

回答

1

的文档是2级深,你只在顶级循环。试试这个......

Dim parsedObject = JObject.Parse(json) 
Dim docs = parsedObject("response")("docs") 

For Each doc In docs 
    Dim snippet As String = doc("snippet") 
    Dim URL As String = doc("web_url") 
    Dim source As String = doc("source") 

    '.... 

Next 
+0

安东尼, 谢谢!那就是诀窍! – SteveMcG