如何正确地将json转换为键实际上是变化值的对象?

时间:2019-01-25 12:12:57

标签: java json

我想知道如何进行这种转换。

我通常像这样从json转换为Java对象:

{
    "detail" : 
        {
            "student": {
                "name" : "John Doe",
                "age" : 31
            }
        }

}

因此,我可以轻松创建一个名为Student的Java对象,并执行类似的操作

public class Student {
String name;
int age;

public Student(@JsonProperty("name") String name, @JsonProperty("age") int age){
    this.name = name;
    this.age = age;
}

}

但是现在我正面临这个问题...

我正在收到这样的JSON:

{
       "detail" : 
        {
            "123456789": {
                "name" : "John Doe",
                "age" : 31
            }
        }

}

在这种情况下, 123456789 是“学生” ...

无论如何,我是否可以设计一个对象以将 JSON 解析为我的 java对象?我不知道该怎么做...

1 个答案:

答案 0 :(得分:3)

这个小例子可能有帮助吗?

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.util.Map;

public class TestJson {

    public static void main(String[] args) throws IOException {
        String json = "    {\n" +
            "        \"123456789\": {\n" +
            "            \"name\" : \"John Doe\",\n" +
            "            \"age\" : 31\n" +
            "        }\n" +
            "    }";

        ObjectMapper objectMapper = new ObjectMapper();

        Map<Long, Student> map = objectMapper.readValue(json, new TypeReference<Map<Long, Student>>() {
        });
    }

    public static class Student {
        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }
    }
}