/*2017.7.1日更新*/
前几天在公司做一个模块的时候想使用Jsoniter解析一个json字符串,结果发现,当字符串长度大于一定值的时候,就会抛错。
查了写资料,无果,最后换成了gson,成功解析。
/*******************/
之前一直在使用google的gson以解析json,听说Jsoniter的解析速度是gson的10倍,准备体验一番。详细的教程可以在Jsoniter官网上找到Jsoniter官网
maven依赖:
<dependency>
<groupId>com.jsoniter</groupId>
<artifactId>jsoniter</artifactId>
<version>0.9.8</version>
</dependency>
序列化和反序列化:
Any obj = JsonIterator.deserialize("[1,2,3]");
System.out.println(obj.toString());//输出 [1,2,3]
int[] array = JsonIterator.deserialize("[1,2,3]", int[].class);
System.out.println(array[2]);//输出3
System.out.println(JsonStream.serialize(new int[]{1,2,3}));//输出 [1,2,3]
可以直接转换为String,很方便
public class ErrorMessage {
private String err;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getErr() {
return err;
}
public void setErr(String err) {
this.err = ""+err;
}
}
JsonIterator iter=JsonIterator.parse("{'id':0,'err':'my errors'}".replace('\'', '"'));
try {
ErrorMessage err=iter.read(ErrorMessage.class);
System.out.println(err.getErr());
} catch (IOException e) {
e.printStackTrace();
}
对一段数组的逐个解析:
JsonIterator iter = JsonIterator.parse("[123, {'id': 0,'err':'this error'}]".replace('\'', '"'));
try {
iter.readArray();
System.out.println(iter.readInt());
iter.readArray();
ErrorMessage err= iter.read(ErrorMessage.class);
iter.readArray(); // end of array
System.out.println(err.getErr());
} catch (IOException e) {
e.printStackTrace();
}