当前位置: 首页 > 工具软件 > jsoniter > 使用案例 >

Jsoniter简单的使用介绍

耿敏达
2023-12-01

/*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


单看这段就比gson好用多了,自带的Any类型是真的好用。

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();
	}

这里要说明一下iter.readArray();它返回的是一个boolean类型,当后面还有数组元素的时候就会返回true,这时候就可以解析,然后跳到下一个元素,但是一定要保证解析的类型是正确的。

 类似资料: