Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将动态json转换为具有动态字符串值的java对象。无键值json结构_Java_Json_Object - Fatal编程技术网

将动态json转换为具有动态字符串值的java对象。无键值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

我想将下面的JSON结构转换为java对象,即注释库

POJOJava类结构是什么

Data1可以由任何字符串来表示,就像它第一次作为Data1出现一样,下一次可以是“xyz”

我们如何使用fasterxml json注释转换它


班级结构将是:

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;
}