JSON 对象扁平化
引入依赖
<dependency>
<groupId>com.github.wnameless.json</groupId>
<artifactId>json-flattener</artifactId>
<version>0.8.1</version>
</dependency>
测试
public class JsonFlatterUtil {
@Data
static class Student {
private String name;
private Address address;
private List<Hobby> hobbies;
}
@Data
@AllArgsConstructor
static class Hobby {
private String name;
}
@Data
@AllArgsConstructor
static class Address {
private String city;
private String province;
}
public static void printForm(String str) {
Map<String, Object> map = JsonFlattener.flattenAsMap(str);
for (Map.Entry<String, Object> entry : map.entrySet()) {
String format = MessageFormat.format("{0}:{1}", entry.getKey(), entry.getValue());
System.out.println(format);
}
}
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
List<Hobby> hobbies = Arrays.asList(new Hobby("foot"), new Hobby("badmin"));
Address address = new Address("QP", "SH");
Student student = new Student();
student.setAddress(address);
student.setHobbies(hobbies);
student.setName("张三");
String str = objectMapper.writeValueAsString(student);
System.out.println("ori: " + str);
String flatten = JsonFlattener.flatten(str);
System.out.println("flatten:" + flatten);
String unflatten = JsonUnflattener.unflatten(flatten);
System.out.println("unflatten:" + unflatten);
System.out.println();
printForm(str);
}
}
结果:
ori: {"name":"张三","address":{"city":"QP","province":"SH"},"hobbies":[{"name":"foot"},{"name":"badmin"}]}
flatten:{"name":"张三","address.city":"QP","address.province":"SH","hobbies[0].name":"foot","hobbies[1].name":"badmin"}
unflatten:{"name":"张三","address":{"city":"QP","province":"SH"},"hobbies":[{"name":"foot"},{"name":"badmin"}]}
//for post_man form request,可以直接复制到 post_man中做参数 ^_^
name:张三
address.city:QP
address.province:SH
hobbies[0].name:foot
hobbies[1].name:badmin