技术标签: Java
在解析JSON的时候,除了
代码:
public static void testMe() {
Map map = new HashMap();
map.put("1", "2");
map.put("weq", "asd");
map.put("qw", "");
List list = new ArrayList();
list.add(map);
list.add(map);
list.add(null);
String str1 = String.valueOf(list);
System.out.println(String.valueOf(list));
List ss = JSON.parseObject(str1,List.class);
}
报错信息:
Exception in thread "main" com.alibaba.fastjson.JSONException: parse number key errorpos 3, json : [{1=2, weq=asd, qw=}, {1=2, weq=asd, qw=}, null]
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:295)
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1335)
at com.alibaba.fastjson.parser.deserializer.JavaObjectDeserializer.deserialze(JavaObjectDeserializer.java:45)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:726)
at com.alibaba.fastjson.serializer.CollectionCodec.deserialze(CollectionCodec.java:120)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:642)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:350)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:254)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:467)
at com.ai.rai.interests.management.controller.TestDemo1.testMe(TestDemo1.java:34)
at com.ai.rai.interests.management.controller.TestDemo1.main(TestDemo1.java:16)
代码:
List list = new ArrayList();
list.add("qw");
list.add("wq");
list.add("as");
list.add("xc");
String str1 = String.valueOf(list);
System.out.println(String.valueOf(list));
List ss = JSONArray.parseArray(str1,List.class);
报错:
Exception in thread "main" com.alibaba.fastjson.JSONException: exepct '[', but error, pos 2, json : [qw, wq, as, xc]
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:672)
at com.alibaba.fastjson.serializer.CollectionCodec.deserialze(CollectionCodec.java:120)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:726)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:662)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:657)
at com.alibaba.fastjson.JSON.parseArray(JSON.java:514)
at com.ai.rai.interests.management.controller.TestDemo1.testMe(TestDemo1.java:36)
at com.ai.rai.interests.management.controller.TestDemo1.main(TestDemo1.java:16)
源码:
分析:
看了源码之后,我直接在我的JSON串里面外面加了一层“[]”
可以跑过,但是并没有转换成功
List ss = JSON.parseArray("[[1,2]]",List.class);
System.out.println(ss.get(0));
输出:
所以这个解析是失败的,明显不能实现我们需要的功能,我们再去看源码里面,其实方法
JSON.parseArray()
的第二个参数是转换后的类型;正确的使用方法应该是这样:
List ss = JSON.parseArray("[1,2]");
System.out.println(ss.get(0));
或者这样:
List ss = JSON.parseArray("[1,2]",Object.class);
System.out.println(ss.get(0));
当然,也可以根据自己要实现的功能自由选择;
阿里的jar包还是很厉害的,折腾了一天,原来是这么低级的错误;很尴尬;
但是如果换成String:
List ss = JSONArray.parseArray("[q,w]",Object.class);
System.out.println(ss.get(0));
继续报错:
Exception in thread "main" com.alibaba.fastjson.JSONException: syntax error, pos 2, json : [q,w]
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1394)
at com.alibaba.fastjson.parser.deserializer.JavaObjectDeserializer.deserialze(JavaObjectDeserializer.java:45)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:726)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:662)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:657)
at com.alibaba.fastjson.JSON.parseArray(JSON.java:514)
at com.ai.rai.interests.management.controller.TestDemo1.testMe(TestDemo1.java:27)
at com.ai.rai.interests.management.controller.TestDemo1.main(TestDemo1.java:13)
这个时候:
List ss = JSONArray.parseArray("[\"q\",\"w\"]",Object.class);
System.out.println(ss.get(0));
问题解决;
所以,这个应该怎么改呢?这个解决方案肯定不合理,数据多了改死你;
这不会连这个都没法应付吧,健壮性也太差了;
在集群服务器环境下编译安装深度学习库Caffe
Ubuntu系统升级到18.10以后,使用VSCODE发现空格间距极小,很难分辨出此处还有空格,但是VSCODE没有自定义空格距离的设置,顾通过更换字体来实现空格距离的调整。默认字体的空格1. 在ubuntu下,可以通过`sudo apt install fonts-firacode`[参考](https://github.com/tonsky/FiraCode/wiki/Linux-instru...
回答:在3DMax2011以下版本中想导入SketchUp文件,首先要确保你的SketchUp是专业版,其次必须要在SketchUp里把物体导出为3ds格式,在SketchUp里选择Files——Export——选择文件名,文件类型为3ds执行导出,打开3DMax里选择Files——Import——import,选择刚才导出的3ds文件。从3DMax2011版开始可以就直接打开SketchUp文件...
1.JDBC(JavaDatabase Connectivity)JDBC是以统一方式访问数据库的API.它提供了独立于平台的数据库访问,也就是说,有了JDBC API,我们就不必为访问Oracle数据库专门写一个程序,为访问Sybase数据库又专门写一个程序等等,只需要用JDBC API写一个程序就够了,它可以向相应数据库发送SQL调用.JDBC是Java应用程序与各种不同数
文通TH-OCR SDK 11,是北京文通科技有限公司研制开发的多语种亚洲语言文字识别软件开发包,提供强大的识别API开发接口,帮助用户将OCR文字识别技术无缝内嵌到用户业务系统中,为数字资源的建立提供了方便,快捷,稳定的技术手段。TH-OCR SDK 支持简体中文、繁体中文、日文、韩文、纯英文的文字识别,具有识别率高、适应性强等突出的技术优势。 第一部分:许可
简介该可持续集成教程基于docker容器搭建,通过拉取放在开源中国[email protected]的代码,来构建可持续集成环境。准备工作[email protected]账号具体步骤搭建docker环境具体搭建步骤见我以前的文章《docker使用技巧》。本文教程,我是搭建在自己的阿里云服务器上面的。安装jenkins具体命令docker pull jenkinschown 1000 /data/jenkin...
在前面的博客已经介绍过多元回归模型,现在这里粗略介绍如下python 实现案例1、选取数据执行代码#!usr/bin/envpython#_*_coding:utf-8_*_importpandasaspdimportseabornassnsimportmatplotlib.pyplotaspltimportmatplotlibasmpl#显示中文defmul...
任何一门语言的学习都是一个苦恼的过程,任何一门技术的学习也是这样,对于三年前接触Android开发以来,一直是摸着石头过河的感觉,这个过程也是见证了Android系统从1.1到4.2的不断完善的过程,一直以来感觉入门是最最重要的一步,因为开始的学习过程就决定了你以后使用这门技术的一个思维习惯和使用习惯。Android系统的不断升级使得Android开发人员需要付出很大的努力才能不断的去与之适应。
因为有时候传输的json数据比较多,比较大的时候,我们需要对json数据进行压缩。下面贴出一个使用的例子“`httpServletResponse.setHeader(“Content-Encoding”, “gzip”); httpServletResponse.setHeader(“Transfer-Encoding”, “chunked”); String str=”需要压缩的json
各位看到这个标题不要嫌烦,因为本人最近一直在研究相关的问题,所以相关文章也只能是这些,同时希望看过我的文章的朋友,我的文章能够给你帮助。在前面的两篇相关的文章里面,实现InfoWindow是通过div的东西实现的,本文要讲的是通过集成InfoWindowBase实现infowindow的。实现后InfoWindow主要修改了arcgis原来的样式,并加入了InfoWindow出...
QCalendarWidget日历控件
我们在开发使用android studio开发Framework时发现打开源码项目类和类之间无联系,代码不会自动联想,并且android sdk里的类和方法也无法自动联想并且没有错误提示。这样开发起来效率会很低。那能不能用AS开发android源码时和开发APP一样呢?答案是可以的~我们可以用android studio导入android.ipr的方法来开发Framework。获取android.ipr的步骤1、编译idegen模块,在aosp文件目录下执行make idege..