将动态json转换为具有动态字符串值的java对象。无键值json结构
我想将下面的JSON结构转换为java对象,即注释库 POJOJava类结构是什么 Data1可以由任何字符串来表示,就像它第一次作为Data1出现一样,下一次可以是“xyz” 我们如何使用fasterxml json注释转换它将动态json转换为具有动态字符串值的java对象。无键值json结构,java,json,object,Java,Json,Object,我想将下面的JSON结构转换为java对象,即注释库 POJOJava类结构是什么 Data1可以由任何字符串来表示,就像它第一次作为Data1出现一样,下一次可以是“xyz” 我们如何使用fasterxml json注释转换它 班级结构将是: public class Data1{ @JsonProperty("Name") private String name; @JsonProperty("Number") priv
班级结构将是:
public class Data1{
@JsonProperty("Name")
private String name;
@JsonProperty("Number")
private int number;
public String getName() {
return name;
}
public void setName(String name) {
name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
number = number;
}
}
public class Data {
@JsonProperty("Data1")
Object data1;
public Object getData1() {
return data1;
}
public void setData1(Object data1) {
this.data1 = data1;
}
}
注意变量命名约定
要测试的代码:
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
Data data1 = mapper.readValue("{\"Data1\":{\"Name\":\"abc\",\"Number\":2}}", Data.class);
System.out.println(mapper.writeValueAsString(data1));//{"Data1":{"Name":"abc","Number":2}}
Data data2 = mapper.readValue("{\"Data1\":\"data value\"}", Data.class);
System.out.println(mapper.writeValueAsString(data2));//{"Data1":"data value"}
}
类节点{
公共字符串名称;
公共整数
}
类ConvertedPojo{
公共地图属性;
}
因为Data1可以是任何字符串,所以您需要一个映射,该映射将所有不同的字符串存储为键,值存储为json对象Data1是字符串值。没有任何类/节点。它可以更改dData1无法修复,因为它是一个变量StringJSON是由您生成的?是否可以创建另一个名为“dataName”的字段,并将其置于相同的名称和编号级别?如果没有此更改,则无法使用基于注释的反序列化器no。我是消费者。需要在pojoSo中直接转换它,您必须使用映射结构,而不是基于注释的反序列化器:请看这里,我需要将java对象传递给第三方。在这种情况下,你的回答会是什么意思?试着在你的问题中做一个完整的例子。空地图来了
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
Data data1 = mapper.readValue("{\"Data1\":{\"Name\":\"abc\",\"Number\":2}}", Data.class);
System.out.println(mapper.writeValueAsString(data1));//{"Data1":{"Name":"abc","Number":2}}
Data data2 = mapper.readValue("{\"Data1\":\"data value\"}", Data.class);
System.out.println(mapper.writeValueAsString(data2));//{"Data1":"data value"}
}
class Node {
public String name;
public int number
}
class ConvertedPojo {
public Map<String, Node> attributes;
}