得到JSONArray我必須返回JSON數據同步.NET Web服務支持的多平臺應用程序科爾多瓦。這工作正常。無法從.NET Web服務
我現在想給本地調用加入到被鉤到廣播接收器,這樣我可以提供,當應用程序沒有運行豐富通知應用程序的Android版本。
這些事件的調度和執行被細運行;但是我在處理Web服務調用的結果時遇到了實際問題。
的web服務調用(VB.net)爲:
<OperationContract()>
<WebInvoke(Method:="POST", ResponseFormat:=WebMessageFormat.Json)>
Public Function SyncNotifications_Native(ByVal dateAfter As String, ByVal which As Integer, ByVal userID As Int32) As String
Dim rowsList As New List(Of Dictionary(Of String, Object))()
Dim row As Dictionary(Of String, Object)
:::
:::
While dr.Read()
row = New Dictionary(Of String, Object)
row.Add("allow_reply", dr("allow_reply"))
row.Add("content", dr("content"))
row.Add("date_added", dr("date_added")
row.Add("date_deleted", dr("date_deleted")
row.Add("date_read", dr("date_read")
row.Add("deleted", dr("deleted"))
row.Add("last_update", Now().ToString("yyyy-MM-dd HH:mm:ss"))
row.Add("notification_id", dr("notification_id"))
row.Add("subject_line", dr("subject_line"))
row.Add("user_id", dr("user_id"))
rowsList.Add(row)
End While
Return New JavaScriptSerializer().Serialize(details)
End Function
這應返回零個或多個條目的陣列。 我使用的AsyncTask獲取數據。這是我從通話中得到的數據:
{"d":"
[{\"allow_reply\":1,\"content\":\"test content\",
\"date_added\":\"2016-02-04 23:37:50\",\"date_deleted\":\"\",
\"date_read\":\"\",\"deleted\":0,\"last_update\":\"2016-02-04 23:38:43\",
\"notification_id\":27,\"subject_line\":\"test\",\"user_id\":1}]
"}
我看過各種資源,並嘗試過所有類型的解決方案。這是目前我在做什麼:
轉換返回的字符串成JSON對象:
JSONObject json2 = new JSONObject(s);
嘗試獲得了數組對象:
JSONArray results = json2.getJSONArray("d");
這種方式給我一個錯誤:
java.lang.String cannot be converted to JSONArray
我在另一篇文章中看到了一個建議,我實際上正在返回一個SOAP響應f rom我的網絡服務;我不知道,我還沒有看到它開始
{"d":
我怎樣才能正確地得到返回數組成JSONArray,這樣我可以將它傳遞給另一個功能的任何其它例如JSON響應?
感謝
錯誤:java.lang.String中不能轉換到JSONArray 是因爲「d」的值:是一個字符串。看:{「d」:「[..]」。你應該返回一個像這樣的格式的數組:{「d」:[..]沒有引號 – JpCrow
這就是Web服務發送它的方式。如果有任何幫助,我在Web服務代碼中添加了更多詳細信息? – DaveSav
我不知道如何解決這個在服務器端,但在客戶端上,你可以使用'JSONObject obj = new JSONObject(s); String arrStr = obj.getString(「d」); JSONArray array = new JSONArray(arrStr);' – varren