首页 > 解决方案 > Java Spring,解组动态json

问题描述

我正在尝试解组来自服务器的 json 响应。但我想知道当 json 响应发生变化时使用哪种方法是最好的方法。

例如,如果我有这样的 json 响应:

{
  "name": "John",
  "last_name": "John Last name",
  "date_of_birth": "01.01.1990"
} 

使用杰克逊,我可以将 json 对象反序列化为 Person.class,如下所示:

@NoARgsConstructor
@Setter
public class Person(){
 private String name;
 private String lastName;
 private String dateOfBirth;
}

但是如果 json 结构发生了变化,现在人的属性进入了一个人对象。

{
   "person": {
      "name": "John",
      "last_name": "John Last name",
      "date_of_birth": "01.01.1990"
    } 
 }

避免这些事情或避免这些问题的最佳方法是什么?是否有任何可能的解决方案或方法可以在 java spring 中实现?

标签: javaspringserializationjackson

解决方案


自己在 JSON 中搜索怎么样?

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

public class Foo {
   public static void main(String args[]) throws Exception {
      String jsonString = "{\"foo\":\"bar\"}";
      ObjectMapper mapper = new ObjectMapper();
      ObjectNode node = mapper.readValue(jsonString, ObjectNode.class);
      if(node.has("foo")) {
         System.out.println("foo: " + node.get("foo"));
      }
   }
}

推荐阅读