Jackson(一)Streaming API

来源:互联网 发布:360连接助理软件 编辑:程序博客网 时间:2024/05/17 07:29

Jackson包

这里写图片描述


实体类

public class Person implements Serializable {    private static final long serialVersionUID = -4653164706668338935L;    private int id;    private String username;    private String password;    private Address address;    private String[] hobby;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public Address getAddress() {        return address;    }    public void setAddress(Address address) {        this.address = address;    }    public String[] getHobby() {        return hobby;    }    public void setHobby(String[] hobby) {        this.hobby = hobby;    }    @Override    public String toString() {        return "Person [id=" + id + ", username=" + username + ", password="                + password + ", address=" + address + ", hobby="                + Arrays.toString(hobby) + "]";    }}public class Address implements Serializable {    private static final long serialVersionUID = 1310389268587385235L;    private String city;    private String street;    public Address() {        super();    }    public Address(String city, String street) {        super();        this.city = city;        this.street = street;    }    public String getCity() {        return city;    }    public void setCity(String city) {        this.city = city;    }    public String getStreet() {        return street;    }    public void setStreet(String street) {        this.street = street;    }    @Override    public String toString() {        return "Address [city=" + city + ", street=" + street + "]";    }}

JsonGenerator使用

@Testpublic void testJsonGenerator() throws IOException {    //关键对象,可以重用    ObjectMapper mapper = new ObjectMapper();    //获得JsonFactory对象    JsonFactory factory = mapper.getFactory();    factory.configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, true);    //获得生成的json文件的根路径    String basePath = this.getClass().getClassLoader().getResource("").getPath().substring(1);    JsonGenerator jsonGenerator = factory.createGenerator(                                        new File(basePath+"generator.json"), JsonEncoding.UTF8);    //格式化打印json文件    jsonGenerator.useDefaultPrettyPrinter();    //开启写对象模式    jsonGenerator.writeStartObject();    jsonGenerator.writeNumberField("id", 1006);    jsonGenerator.writeStringField("username", "TangSanZang");    jsonGenerator.writeStringField("password", "jiubugaosuni");    jsonGenerator.writeObjectField("address",                         new Address("ShangHai", "NanJiangRoad"));    jsonGenerator.writeArrayFieldStart("hobby");    jsonGenerator.writeString("eat");    jsonGenerator.writeString("drink");    jsonGenerator.writeString("football");    jsonGenerator.writeEndArray();    jsonGenerator.writeEndObject();    jsonGenerator.close();}
上面代码执行完毕后,生成的Json文件如下{  "id" : 1006,  "username" : "TangSanZang",  "password" : "jiubugaosuni",  "address" : {    "city" : "ShangHai",    "street" : "NanJiangRoad"  },  "hobby" : [ "eat", "drink", "football" ]}

JsonParser使用

@Testpublic void testJsonParser() throws IOException {    //关键对象,可以重用    ObjectMapper mapper = new ObjectMapper();    //获得JsonFactory对象    JsonFactory factory = mapper.getFactory();    factory.configure(JsonParser.Feature.ALLOW_COMMENTS, true);    factory.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);    factory.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);    InputStream in = this.getClass().getClassLoader().getResourceAsStream("generator.json");    JsonParser jsonParser = factory.createParser(in);    //用于封装数据的实体类    Person person = new Person();    while(jsonParser.nextToken() != JsonToken.END_OBJECT){        String filedName = jsonParser.getCurrentName();        if("id".equals(filedName)){            jsonParser.nextToken();            person.setId(jsonParser.getValueAsInt());        }        if("username".equals(filedName)){            jsonParser.nextToken();            person.setUsername(jsonParser.getValueAsString());        }        if("password".equals(filedName)){            jsonParser.nextToken();            person.setPassword(jsonParser.getValueAsString());        }        if("address".equals(filedName)){            Address address = new Address();            while(jsonParser.nextToken() != JsonToken.END_OBJECT){                String referenceFieldName = jsonParser.getCurrentName();                if("city".equals(referenceFieldName)){                    jsonParser.nextToken();                    address.setCity(jsonParser.getValueAsString());                }                if("street".equals(referenceFieldName)){                    jsonParser.nextToken();                    address.setStreet(jsonParser.getValueAsString());                }            }            person.setAddress(address);        }        if("hobby".equals(filedName)){            StringBuilder builder = new StringBuilder();            jsonParser.nextToken();            while(jsonParser.nextToken() != JsonToken.END_ARRAY){                builder.append(jsonParser.getValueAsString()+",");            }            person.setHobby(builder.toString().split(","));        }    }    System.out.println(person);    jsonParser.close();}
上面的代码执行完毕后,实体类封装了json数据Person [id=1006, username=TangSanZang, password=jiubugaosuni, address=Address [city=ShangHai, street=NanJiangRoad], hobby=[eat, drink, football]]
0 0