Jsoniter简单的使用介绍

/*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,这时候就可以解析,然后跳到下一个元素,但是一定要保证解析的类型是正确的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值