有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在spring boot中解析json响应的最佳方法

我使用rest模板使用rest端点,该模板返回以下josn消息。 对象包装器是更好的方法还是json对象解析更好

[
      {
      "id": "UAMwcI",
      "messageId": "PyXPTk-6XUBhbONWZ2DOw3___pFykwV5bQ",
      "timestamp": 1574330759814,
      "type": "MESSAGESENT",
      "initiator": {"user":       {
         "userId": 345315370604341,
         "firstName": "Sanjeet",
         "lastName": "Mohanty",
         "displayName": "Sanjeet Mohanty",
         "email": "Sanjeet.mohanty@db.com",
         "username": "Sanjeet.mohanty@db.com"
      }},
      "payload": {"messageSent": {"message":       {
         "messageId": "PyXPTk-6XUBhbONWZ2DOw3___pFykwV5bQ",
         "timestamp": 1574330759814,
         "message": "<div data-format=\"PresentationML\" data-version=\"2.0\" class=\"wysiwyg\"><p>test 2 <\/p><\/div>",
         "data": "{}",
         "user":          {
            "userId": 345315370604341,
            "firstName": "Sanjeet",
            "lastName": "Mohanty",
            "displayName": "Sanjeet Mohanty",
            "email": "Sanjeet.mohanty@db.com",
            "username": "Sanjeet.mohanty@db.com"
         },
         "stream":          {
            "streamId": "cL7jzEDwLxX_gN7D1QbMQn___pP73Ad6dA",
            "streamType": "IM"
         },
         "externalRecipients": false,
         "userAgent": "DESKTOP-40.0.0-10726-Windows-7-Chrome-76.0.3809.87",
         "originalFormat": "com.symphony.messageml.v2"
      }}}
   },
      {
      "id": "Bvua7t",
      "messageId": "8usJ_xioHKkRrevhyn38wn___pFykv-WbQ",
      "timestamp": 1574330761321,
      "type": "MESSAGESENT",
      "initiator": {"user":       {
         "userId": 345315370604341,
         "firstName": "Sanjeet",
         "lastName": "Mohanty",
         "displayName": "Sanjeet Mohanty",
         "email": "Sanjeet.mohanty@db.com",
         "username": "Sanjeet.mohanty@db.com"
      }},
      "payload": {"messageSent": {"message":       {
         "messageId": "8usJ_xioHKkRrevhyn38wn___pFykv-WbQ",
         "timestamp": 1574330761321,
         "message": "<div data-format=\"PresentationML\" data-version=\"2.0\" class=\"wysiwyg\"><p>test 3<\/p><\/div>",
         "data": "{}",
         "user":          {
            "userId": 345315370604341,
            "firstName": "Sanjeet",
            "lastName": "Mohanty",
            "displayName": "Sanjeet Mohanty",
            "email": "Sanjeet.mohanty@db.com",
            "username": "Sanjeet.mohanty@db.com"
         },
         "stream":          {
            "streamId": "cL7jzEDwLxX_gN7D1QbMQn___pP73Ad6dA",
            "streamType": "IM"
         },
         "externalRecipients": false,
         "userAgent": "DESKTOP-40.0.0-10726-Windows-7-Chrome-76.0.3809.87",
         "originalFormat": "com.symphony.messageml.v2"
      }}}
   }
]

共 (1) 个答案

  1. # 1 楼答案

    序列化反序列化JSON有很多方法

    如果您有与RESTAPI的返回值匹配的Pojo类 例如,你可以用杰克逊来做这项工作

    PojoClass mypojo = new ObjectMapper().readValue(JsonString, PojoClass.class);
    

    或者简单地转换为JSonNode并在节点上迭代

    JsonNode jsonNode = new ObjectMapper().readTree(JsonString); 
    

    查看链接了解更多信息 https://www.baeldung.com/jackson-object-mapper-tutorial