简体   繁体   English

如何从java对象动态映射json?

[英]How to map json from java object dynamically?

How can we map the java object to json?我们如何将java对象映射到json? Java object will have a map and some other string properties. Java 对象将有一个映射和一些其他字符串属性。 What I want is that when we convert the java object to json that map keys should be as root key not nested key.我想要的是,当我们将 java 对象转换为 json 时,映射键应该作为根键而不是嵌套键。

Sample Java Object :示例 Java 对象:

class Demo {
    String name;
    String designation;
    Map<String,Object> attribute;
}

Now if Map is having values like below :现在,如果 Map 具有如下值:

Map<String,Object> attribute = new HashMap<>();
attribute.put("score",190);
attribute.put("status","allowed");

Output should be like below:输出应如下所示:

{
  "name":"jack",
  "designation":"Tester",
  "score":190,
  "status":"allowed"
}

If I get you right - use Jackson.如果我猜对了 - 使用杰克逊。 Example:例子:

Java Objects to JSON Java 对象到 JSON

ObjectMapper mapper = new ObjectMapper();

// Java object to JSON file
mapper.writeValue(new File("c:\\test\\staff.json"), new Staff());

// Java object to JSON string
String jsonString = mapper.writeValueAsString(object);

JSON to Java Objects JSON 到 Java 对象

ObjectMapper mapper = new ObjectMapper();

//JSON file to Java object
Staff obj = mapper.readValue(new File("c:\\test\\staff.json"), Staff.class);

//JSON URL to Java object
Staff obj = mapper.readValue(new URL("http://some-domains/api/name.json"), Staff.class);

//JSON string to Java Object
Staff obj = mapper.readValue("{'name' : 'mkyong'}", Staff.class);

Repo: https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind回购: https : //mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind

Jackson JSON Tutorial: https://www.baeldung.com/jackson杰克逊 JSON 教程: https : //www.baeldung.com/jackson

Another example: https://mkyong.com/java/jackson-2-convert-java-object-to-from-json/另一个例子: https : //mkyong.com/java/jackson-2-convert-java-object-to-from-json/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM