2014-03-28 83 views
1

我目前正在製作一個解析Urban Dictionary API的程序,但是我無法得到它返回選定的定義。Newtonsoft json異常

這是我當前的代碼前檢索和分析數據:

Dim sourceString As String = New System.Net.WebClient().DownloadString("http://api.urbandictionary.com/v0/define?term=" & strRet) 

      rtxtDefinition.Text = sourceString 

      Dim jResults As JArray = JArray.Parse(sourceString) 
      Dim results As List(Of JToken) = jResults.Children().ToList() 

      For Each item As JProperty In results 
       item.CreateReader() 
       MsgBox(item.Value("definition")) 
      Next 

注意strRet是用戶輸入 這是城市的字典API結構的一個例子:http://pastebin.com/11Z5uVRN

當前的代碼僅僅因爲我首先需要讓它返回一個定義,所以沒有支持來找到第(n)個定義。

所以很明顯,我做錯了,因爲錯誤:Newtonsoft.Json.JsonReaderException但我不知道。

任何幫助將是驚人的。謝謝!

編輯: Exception

+0

您可以添加異常的詳細信息(消息,堆棧等) – bryanmac

+0

這將是有幫助的是被複制的部分剪貼板。它會告訴我們更多關於正在發生的事情。 –

回答

0

你處理JSON字符串的根本不是一個數組,但單個對象。因此,您可以將其解析到JObject而不是JArray,例如:

Dim jobj As JObject = JObject.Parse(sourceString); 
Dim arr As JArray = jobj("list"); 
For Each(var item in arr.Children(Of JObject)()) 
    MsgBox(item("definition").ToString()); 
Next 
+0

我得到它的工作,謝謝!現在我只需要弄清楚如何選擇第一或第二等,因爲它正在查看像20000的定義... – Unreliaable