JSR 353 - 对象模型:如何随机访问对象

时间:2017-01-03 09:17:22

标签: java json api

example.json

{
    "user": "John",
    "age": 25,
    "gender": "Male",
    "title-name": ["title1","title2","title3"], 
    "address": 
    {
        "permanent-address":
        {
            "city": "Ohio",
            "country": "US"
        },
        "temporary-address":
        {
            "city": "Chicago",
            "country": "US"
        }

    }
}

如何在不移动到temporary-address对象的情况下直接访问address
是否可以随机访问?解释如何为给定的json文件构建树。

1 个答案:

答案 0 :(得分:0)

我建议你使用java的Jackson注释。 这是一个简单的框架,允许您将Java对象转换为JSON或从JSON转换。

你会在这里找到toturiels https://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/

github项目在这里: https://github.com/FasterXML/jackson-annotations

一个简短的explenation是你将使用POJO(Plain Old Java Object)映射你的Json对象 基于你的example.json,我们将:

public class Example {

@JsonProperty("user")
private String name;

@JsonProperty("age")
private int age;

@JsonProperty("gender")
private String gender;

@JsonProperty("title-name")
private ArrayList<String> titleNames;

@JsonProperty("address")
private Adresses adresses;
...

请注意最后一个字段的地址类。 地址是一个POJO,其中包含有关2个地址的信息:

public class Addresses {

@JsonProperty("permanent-address")
private Address permanenentAddress;

@JsonProperty("temporary-address")
private Address temporaryAddress;
...

最后,你的Address子元素与一个包含city和contry信息的POJO类配合使用:

 public class Address {

@JsonProperty("city")
private String city;

@JsonProperty("country")
private String country;

使用

将example.java POJO与example.json配对后
ObjectMapper mapper = new ObjectMapper();
Example data = mapper.readValue(exampleJsonObject, Example.class);

你有!!您可以在一行中访问TemporaryAdress信息或任何信息;)

ObjectMapper mapper = new ObjectMapper();
Example data = mapper.readValue(exampleJsonObject, Example.class);
Address address =  data.getAdresses().getTemporaryAdress(); 
祝你好运