我成功连接到远程服务器,我得到的响应是 15,000字JSONObject。 我对JSON解析非常好,但这与我之前见过的完全不同。 这是我得到的JSON响应的一小部分:
\“:\”DI_Orders \“,\”查询\“:\”SELECT * from TBL_Orders \“,\”DataSourceID \“:\”29cdf9d8-b6fe-4ea5-ac14-e5860a9494db \“,\”列\ “:[{\” @ ID \ “:\” C1 \ “\ ”@数据类型\“:\ ”System.String \“ \ ”的ColumnName \“:\ ”科\“},{\” @ ID \ “:\” C2 \ “\ ”@数据类型\“:\ ”System.Int32 \“ \ ”的ColumnName \“:\ ”DelayInDays \“},{\ ”@ ID \“:\” C3 \ ” \ “@数据类型\”:\ “System.Int32 \” \ “的ColumnName \”:\ “订单ID \”},{\ “@ ID \”:\ “C4 \”,\ “@数据类型\” :\ “System.Int32 \” \ “的ColumnName \”:\ “的ProductID \”},{\ “@ ID \”:\ “C5 \”,\ “@数据类型\”:\ “System.String \” ,\ “的ColumnName \”:\ “产品名称\”},{\ “@ ID \”:\ “C6 \”,\ “@数据类型\”:\ “System.Int32 \” \ “的ColumnName \”:\ “数量\”},{\ “@ ID \”:\ “C7 \”,\ “@数据类型\”:\ “System.String \” \ “的ColumnName \”:\ “OrderStatus \”}],\ “PrimaryKeyColumns \”:{\ “列\”:{\ “@ ID \”:\ “C7 \”}}},{\ “@ ID \”:\ “231c9c51-00e3-4141-bf38-dae6f08d861c \” ,\ “@ StructureType \”:\ “常规\”,\ “@类型\”:\ “查询\”,\ “@ DataSourceType \”:\ “SQL \”,\ “DataItemName \”:\“DI_DailySales \ “,”\“查询\”:\“SELECT * from DailySales \”,“DataSourceID \”:\“29cdf9d8-b6fe-4ea5-ac14-e5860a9494db \”,\“Columns \”:[
它看起来像某种类型的SQL .. 有谁知道那是什么?或者我如何解析它以获得具体细节? 我不知道如何处理这个长期反应..
答案 0 :(得分:2)
这个结构很可能会发生变化,因为它非常大,可能直接映射数据库表,这意味着修改模式会引入响应变化以及解析器。如果出现问题,请注意不要在解析时失败。
我几乎总是使用Jackson映射器将JSON响应映射到特定的Java模型,
但是在你的情况下,我不认为你应该解析整个事情,我会有一个模型,它只会解析你需要的东西,而不是一切。
如果发生变化,它将为您节省大量编写解析器和重新编译的时间。感觉更加可维护而不是整个事情。最终,因为你需要更多的东西,你可以解析更多的东西。
另一个选择就是将它放在一个json对象中并将其用作一个巨大的HashMap,只需从键中提取需要的值。这与我将要做的完全相反,但在你的情况下可能会更好。
另一方面,无论是谁写了响应这样的网络服务都应该被拍摄:)