1

我成功连接到远程服务器,得到的响应是 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\",\"列名\":\"ProductName\"},{\"@ID\":\"C6\",\"@DataType\":\"System.Int32\",\"ColumnName\":\"数量\"},{\" @ID\":\"C7\",\"@DataType\":\"System.String\",\"ColumnName\":\"OrderStatus\"}],\"PrimaryKeyColumns\":{\"Column \":{\"@ID\":\"C7\"}}},{\"@ID\":\"231c9c51-00e3-4141-bf38-dae6f08d861c\",\"@StructureType\":\ "Regular\",\"@Type\":\"Query\",\"@DataSourceType\":\"Sql\",\"DataItemName\":\"DI_DailySales\",\"Query\":\ "SELECT * from DailySales\",\"DataSourceID\":\"29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\",\"Columns\":[C6\",\"@DataType\":\"System.Int32\",\"ColumnName\":\"数量\"},{\"@ID\":\"C7\",\"@DataType \":\"System.String\",\"ColumnName\":\"OrderStatus\"}],\"PrimaryKeyColumns\":{\"Column\":{\"@ID\":\"C7\ "}}},{\"@ID\":\"231c9c51-00e3-4141-bf38-dae6f08d861c\",\"@StructureType\":\"Regular\",\"@Type\":\"查询\",\"@DataSourceType\":\"Sql\",\"DataItemName\":\"DI_DailySales\",\"Query\":\"SELECT * from DailySales\",\"DataSourceID\":\ "29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\",\"列\":[C6\",\"@DataType\":\"System.Int32\",\"ColumnName\":\"数量\"},{\"@ID\":\"C7\",\"@DataType \":\"System.String\",\"ColumnName\":\"OrderStatus\"}],\"PrimaryKeyColumns\":{\"Column\":{\"@ID\":\"C7\ "}}},{\"@ID\":\"231c9c51-00e3-4141-bf38-dae6f08d861c\",\"@StructureType\":\"Regular\",\"@Type\":\"查询\",\"@DataSourceType\":\"Sql\",\"DataItemName\":\"DI_DailySales\",\"Query\":\"SELECT * from DailySales\",\"DataSourceID\":\ "29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\",\"列\":[数量\"},{\"@ID\":\"C7\",\"@DataType\":\"System.String\",\"ColumnName\":\"OrderStatus\"}],\" PrimaryKeyColumns\":{\"Column\":{\"@ID\":\"C7\"}}},{\"@ID\":\"231c9c51-00e3-4141-bf38-dae6f08d861c\", \"@StructureType\":\"Regular\",\"@Type\":\"Query\",\"@DataSourceType\":\"Sql\",\"DataItemName\":\"DI_DailySales\" ,\"Query\":\"SELECT * from DailySales\",\"DataSourceID\":\"29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\",\"Columns\":[数量\"},{\"@ID\":\"C7\",\"@DataType\":\"System.String\",\"ColumnName\":\"OrderStatus\"}],\" PrimaryKeyColumns\":{\"Column\":{\"@ID\":\"C7\"}}},{\"@ID\":\"231c9c51-00e3-4141-bf38-dae6f08d861c\", \"@StructureType\":\"Regular\",\"@Type\":\"Query\",\"@DataSourceType\":\"Sql\",\"DataItemName\":\"DI_DailySales\" ,\"Query\":\"SELECT * from DailySales\",\"DataSourceID\":\"29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\",\"Columns\":[PrimaryKeyColumns\":{\"Column\":{\"@ID\":\"C7\"}}},{\"@ID\":\"231c9c51-00e3-4141-bf38-dae6f08d861c\", \"@StructureType\":\"Regular\",\"@Type\":\"Query\",\"@DataSourceType\":\"Sql\",\"DataItemName\":\"DI_DailySales\" ,\"Query\":\"SELECT * from DailySales\",\"DataSourceID\":\"29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\",\"Columns\":[PrimaryKeyColumns\":{\"Column\":{\"@ID\":\"C7\"}}},{\"@ID\":\"231c9c51-00e3-4141-bf38-dae6f08d861c\", \"@StructureType\":\"Regular\",\"@Type\":\"Query\",\"@DataSourceType\":\"Sql\",\"DataItemName\":\"DI_DailySales\" ,\"Query\":\"SELECT * from DailySales\",\"DataSourceID\":\"29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\",\"Columns\":[\"SELECT * from DailySales\",\"DataSourceID\":\"29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\",\"Columns\":[\"SELECT * from DailySales\",\"DataSourceID\":\"29cdf9d8-b6fe-4ea5-ac14-e5860a9494db\",\"Columns\":[

它看起来像某种类型的 SQL .. 有人知道那是什么吗?或者我如何解析它以获取具体细节?我不知道如何处理这么长的回复..

4

1 回答 1

2

这种结构很可能会发生变化,因为它非常大,而且它可能直接映射数据库表,这意味着修改模式将导致响应和解析器发生变化。如果发生变化,请注意不要解析失败。

我几乎总是使用 Jackson 映射器将 JSON 响应映射到特定的 Java 模型,

但在你的情况下,我认为你不应该解析整个事情,我会有一个模型,它只会从这个响应中解析你需要的东西,而不是所有东西。

如果发生变化,它将为您节省大量编写解析器和调试的时间。感觉更易于维护而不是得到整个东西。最终,当你需要更多的东西时,你可以解析出更多的东西。

另一种选择是将它放在一个 json 对象中并将其用作一个巨大的 HashMap,只需从键中提取需要的值。这与我所做的几乎相反,但在你的情况下可能会更好。

在旁注中,编写响应这样的网络服务的人应该被枪杀:)

于 2013-09-02T22:17:41.047 回答