fastjson序列化和反序列化问题。

vainly 发布于 2013/07/22 22:14
阅读 4K+
收藏 0

@wenshao 你好,想跟你请教个问题:

序列化生成文本代码:

package com.client;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSONWriter;

public class FileTest {
	public static void main(String[] args) throws IOException {
		
		List<String> list = new ArrayList<String>();
		
		for(int i=0;i<1000*1000;i++){
			list.add(i+"");
		}
		
		String path = "c:\\fastJson\\Test.JSON";
		File file = new File(path);
		if(!file.exists()){
			file.getParentFile().mkdirs();
		}
		JSONWriter writer = new JSONWriter(new FileWriter(file));
		
		writer.startArray();
		writer.writeObject(list);
		writer.endArray();
		writer.close();
		
	}
}

反序列化读取文本代码:

package com.client;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSONReader;

public class ReaderTest {
	public static void main(String[] args) throws FileNotFoundException {
		String path = "c:\\fastJson\\Test.JSON";
		JSONReader reader = new JSONReader( new FileReader(new File(path)));
		
		List<String> list = new ArrayList<String>();
		
		reader.startArray();
		list = reader.readObject(List.class);
		reader.endArray();
		reader.close();
		
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i));
		}
	}
}

生成文档如图:

抛出异常代码:



被这个问题纠结了一天了。。。。。。

加载中
0
冷血
冷血
list = reader.readObject(List.class);这是不是该用list = reader.readObject(String.class);。我猜的,你试试
vainly
vainly
刚试过,任然不行。
0
vainly
vainly

程序一直抛下标越界异常,然后我就固定list的size大小,

当list长度为1328时,生成文本后,再用JSONReader解析是不会抛出异常的,

如图:

当list长度为1329时,就会抛出异常

如图:

0
游客
游客

友情帮顶。


vainly
vainly
谢谢。
0
wenshao
wenshao
问题在跟进中
vainly
vainly
谢谢温少。
0
wenshao
wenshao

问题已经修复了:

http://code.alibabatech.com/mvn/snapshots/com/alibaba/fastjson/1.1.35-SNAPSHOT/

请帮忙测试一下

vainly
vainly
温少已经测试过,没有问题了,谢谢你。
0
vainly
vainly

将长度为100000000的list列表通过fastJson转换成文本:

解析list文本通过fastJson:

0
IF_YOU
IF_YOU
测试了下fastjson,集合大小为3610,集合里面对象有30个属性,fastjson 要4s,gson1秒
返回顶部
顶部