@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)); } } }
生成文档如图:
抛出异常代码:
被这个问题纠结了一天了。。。。。。
list = reader.readObject(List.class);这是不是该用list = reader.readObject(String.class);。我猜的,你试试######刚试过,任然不行。######
程序一直抛下标越界异常,然后我就固定list的size大小,
当list长度为1328时,生成文本后,再用JSONReader解析是不会抛出异常的,
如图:
当list长度为1329时,就会抛出异常
如图:
######友情帮顶。
问题已经修复了:
http://code.alibabatech.com/mvn/snapshots/com/alibaba/fastjson/1.1.35-SNAPSHOT/
请帮忙测试一下
######温少已经测试过,没有问题了,谢谢你。######将长度为100000000的list列表通过fastJson转换成文本:
解析list文本通过fastJson:
######测试了下fastjson,集合大小为3610,集合里面对象有30个属性,fastjson 要4s,gson1秒
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。