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使用
@Test
public 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使用
@Test
public 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]]