簡體   English   中英

解析來自服務器的非常復雜的 JSON 響應,用於 android 應用程序

[英]parsing a very complicated JSON response from server for android app

我成功連接到遠程服務器,得到的響應是 15,000 字 JSONObject。 我很擅長 JSON 解析,但這與我以前見過的完全不同。 這是我得到的 JSON 響應的一小部分:

\\":\\"DI_Orders\\",\\"Query\\":\\"SELECT * from TBL_Orders\\",\\"DataSourceID\\":\\"29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\\",\\"Columns\\": [{\\"@ID\\":\\"C1\\",\\"@DataType\\":\\"System.String\\",\\"ColumnName\\":\\"Branch\\"},{\\"@ID\\" :\\"C2\\",\\"@DataType\\":\\"System.Int32\\",\\"ColumnName\\":\\"DelayInDays\\"},{\\"@ID\\":\\"C3\\",\\ "@DataType\\":\\"System.Int32\\",\\"ColumnName\\":\\"OrderID\\"},{\\"@ID\\":\\"C4\\",\\"@DataType\\":\\" System.Int32\\",\\"ColumnName\\":\\"ProductID\\"},{\\"@ID\\":\\"C5\\",\\"@DataType\\":\\"System.String\\",\\" ColumnName\\":\\"ProductName\\"},{\\"@ID\\":\\"C6\\",\\"@DataType\\":\\"System.Int32\\",\\"ColumnName\\":\\"Quantity\\ "},{\\"@ID\\":\\"C7\\",\\"@DataType\\":\\"System.String\\",\\"ColumnName\\":\\"OrderStatus\\"}],\\"PrimaryKeyColumns\\ ":{\\"列\\":{\\"@ID\\":\\"C7\\"}}},{\\"@ID\\":\\"231c9c51-00e3-4141-bf38-dae6f08d861c\\",\\" @StructureType\\":\\"Regular\\",\\"@Type\\":\\"Query\\",\\"@DataSourceType\\":\\"Sql\\",\\"DataItemName\\":\\"DI_DailySales\\",\\ "查詢\\":\\"SELECT * from DailySales\\",\\"DataSourceID\\":\\"29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\\",\\"Columns\\":[

它看起來像某種類型的 SQL ......有人知道那是什么嗎? 或者我如何解析它以獲得特定的細節? 我不知道如何處理這么長的回復..

這個結構很可能會改變,因為它非常大,而且它可能直接映射數據庫表,這意味着修改架構將引入響應和解析器的更改。 如果發生變化,請注意不要解析失敗。

我幾乎總是使用 Jackson 映射器將 JSON 響應映射到特定的 Java 模型,

但在你的情況下,我認為你不應該解析整個事情,我會有一個模型,它只會從這個響應中解析你需要的東西,而不是一切。

如果發生變化,它將為您節省大量編寫解析器和調試的時間。 感覺更容易維護而不是得到整個事情。 最終,當你需要更多的東西時,你可以解析出更多的東西。

另一種選擇是將它放在一個 json 對象中並將其用作一個巨大的 HashMap,只需從鍵中提取需要的值。 這與我所做的幾乎相反,但在您的情況下可能會更好。

附帶說明一下,無論誰編寫了像這樣響應的網絡服務,都應該被槍殺:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM