【问题标题】:need to convert a json response into java pojo where the response may return {} or [{},{}]需要将 json 响应转换为 java pojo,其中响应可能返回 {} 或 [{},{}]
【发布时间】:2015-01-17 05:39:45
【问题描述】:

需要将 json 响应转换为 java pojo,其中的字段(在示例中为“performers”)可以返回为 {} 或 [{},{}] 或 null,如下例所示:

例子1:performer value here is a list of datas '{}'.

{

    title:"Sample title1",
    performers: {
         performer:[{
              creator: "AAAA",
              linker: "XXX",

         },
         {
              creator: "BBBBB",
              linker: "YYY",

         }]
     },

      venue_address: "sample addr1"

}

示例 2:performer value here is just data '{}'


{


    title:"sample title2",
    performers: {
         performer: {
              creator: "AAAA",
              linker: "YYY",
         }
    },
    venue_address: "sample addr2"
}

示例 3:performer value is null here

{

    title:"sample title3",
    performers:null,
    venue_address: "sample addr3"
}

我们如何在gson.fromJson 的帮助下将此 json 响应转换为 java pojo。当尝试将其转换为 pojo 时,将执行者字段作为执行字段列表得到错误 "Expecting an OBJECT but found is ARRAY"

【问题讨论】:

  • 应该是 '[]' 而不是 'null'
  • Sridhar,相同的响应包含空值而不是 []。

标签: jackson gson json-deserialization to-json jsonresponse


【解决方案1】:

这样做的正确方法是,

Whether or not you have performers or not it should be an array.
JsonArray should be enclosed with []. even you have ZERO or ONE or More perfomer

示例 2:此处的性能值只是数据 '{}'

{
    title:"sample title2",
    performers: [{
        performer: {
          creator: "AAAA",
          linker: "YYY",
        }]
    },
    venue_address: "sample addr2"
}

例子3:这里的performer值为null

{
    title:"sample title3",
    performers:[],
    venue_address: "sample addr3"
}

【讨论】:

  • 感谢 Sridhar 的回复。但是第三方的 API 响应格式为 performers: { performer: { creator: "AAAA", linker: "YYY", } } 。即, 像 {} 中的现场表演者的响应主体不是 [{}]。如果它有多个表演者,则它以列表形式出现 [{},{}],但在单个表演者的情况下是格式为 {} 而不是 [{},{}}。请帮我解决同样的问题。
  • @A.J.K:: 您正在使用哪个 Json 库进行解析。是否有任何函数可以检查 JsonArray 是否为 NULL?
  • 还要在构建函数中使用库检查它是JSON数组还是Json对象?
  • ,它是用于目的的 Gson 库:Gson().fromJson(,)。但我得到了各种格式的响应通过我的网络浏览器手动调用相同的请求。这就是如何知道响应的各种格式。
  • 我还使用了 Gson 库,您需要正确提供语义,否则会引发错误。您需要更改 API 以正确响应,或者您可以做一个解决方法,例如查找并用 [] 替换 NULL,但第二个真的很难。
猜你喜欢
  • 2018-04-21
  • 1970-01-01
  • 2023-02-15
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 2021-12-14
  • 2021-09-04
  • 2019-09-26
相关资源
最近更新 更多