2014-02-11 3 views
0

JSON.NET을 사용하여 this json document을 처리하려고합니다. VB.NET 코드와 JSON.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을 [this site] (http://json2csharp.com/)에 붙여 넣으면 C# 클래스가 생성됩니다. 2) 해당 클래스를 복사하여 [이 사이트] (http://www.developerfusion.com)에 붙여 넣으십시오./tools/convert/csharp-to-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

관련 문제