【问题标题】:Deserialize a JSON String into list of lists Java POJO将 JSON 字符串反序列化为 Java POJO 列表列表
【发布时间】:2018-06-17 21:33:50
【问题描述】:

我得到下面的 JSON 字符串作为我的 REST API 的请求正文。我不喜欢这种 JSON 结构,但对此我没有任何控制权。是其他人发布了这条消息,我必须创建一个 REST API(POST 方法)并在我的 API 中使用这条消息。所以我必须在我的 REST 控制器中将其反序列化为 Java 对象。它有列表对象的列表。我用fastxml尝试了几种方法,但都没有成功。

{
  "messages": [
    [
      {
        "message": "message1_a",
        "info": {
          "timestamp": "2521013204"
        }
      },
      {
        "message": "message1_b",
        "info": [
          {
            "message": "message1_c",
            "info": {
              "id": "asfa-14fs-df"
            }
          },
          {
            "message": "message1_d",
            "info": {
              "reason": "msg_reason",
            }
          }
        ]
      }
    ]
  ]
}

谁能帮我看看我的 Java POJO 应该是什么样子?

【问题讨论】:

  • 请发表您到目前为止所尝试的内容,这样我们可以更好地帮助您
  • 没有人愿意这样做。只是为了类型安全。但如果您坚持,请尝试使用 Google 地图。
  • @atmin,如果 POJO 以正确的方式编程,那么您应该不会有任何类型安全问题,只要您不将其中一个的时间戳与另一个的 id 放在同一个变量中。只要您创建一个 POJO,它的所有字段都具有正确的类型,它就是解析这些数据的完美方法。
  • 如果这是您自己的代码,那么我建议更改 json 结构。我同意@atmin,这个 json 没有意义。忘记 Java,只需尝试为这个 json 定义一个 json 模式。这将是一场斗争。

标签: java json rest api serialization


【解决方案1】:

这似乎是一个消息数组。

在 Java 中,您可以使用 Spring 将 Json 转换为 Object。

   String url = "http://your/json/url";
   ResponseEntity<Message[]> responseEntity = new RestTemplate().getForEntity(url, Message[].class);

确保您的实体具有 Json 的所有属性。

文档:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html

【讨论】:

    猜你喜欢
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2021-01-08
    • 1970-01-01
    • 2020-05-20
    • 2017-08-09
    相关资源
    最近更新 更多