Java使用jackson问题解决
Java使用jackson问题解决
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
蕃薯耀 2015年9月19日 14:50:37 星期六
http://fanshuyao.iteye.com/
一、描述
使用jackson处理查询淘宝手机号码归属返回的json数据时,发现程序报错。
二、淘宝手机号码归属查询接口
(https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=13430878244)
返回的数据如下:
__GetZoneResult_ = { mts:'1343087', province:'广东', catName:'中国移动', telString:'13430878244', areaVid:'30517', ispVid:'3236139', carrier:'广东移动'}
三、错误一:
在标准json中,要求键和值都要用双引号("")包括的,而淘宝返回的值用单引号,所以报错。
com.fasterxml.jackson.core.JsonParseException: Unexpected character (''' (code 39)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
四、错误一解决方法:
设置Feature.ALLOW_SINGLE_QUOTES为true,表示允许单引号
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(Feature.ALLOW_SINGLE_QUOTES, true);
五、错误二:
在标准json中,要求键和值都要用双引号("")包括的,而淘宝返回的健没有用引号,所以报错。
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('m' (code 109)): was expecting double-quote to start field name
六、错误二解决方法:
设置Feature.ALLOW_UNQUOTED_FIELD_NAMES为true,表示允许无引号包括的字段
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(Feature.ALLOW_SINGLE_QUOTES, true);
objectMapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
七、完整代码
/**
* 淘宝手机归属地查询api
* @param phone
* @return
* @throws Exception
* @throws IOException
*/
@ResponseBody
@RequestMapping("/getPhoneMessage")
public String getPhoneMessage(@RequestParam(value="phone") String phone) throws Exception, IOException{
//手机归属地查询api
//淘宝,返回json
//https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=13430878244 //拍拍,返回json
//http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=13430878244&amount=10000&callname=getPhoneNumInfoExtCallback //百度钱包,返回json的unicode
//https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=13430878244 URI uri = new URIBuilder().setScheme("https").setHost("tcc.taobao.com")
.setPath("/cc/json/mobile_tel_segment.htm")
.setParameter("tel", phone).build();
CloseableHttpClient closeableHttpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(uri);
CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(httpGet);
HttpEntity httpEntity = closeableHttpResponse.getEntity();
InputStream inputStream = httpEntity.getContent();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"GBK"));
StringBuffer stringBuffer = new StringBuffer();
String text = null;
while((text =bufferedReader.readLine()) != null){
stringBuffer.append(text);
}
inputStream.close();
closeableHttpResponse.close();
String jsonString = stringBuffer.toString().split("=")[1].trim();//处理=号前的非json字符串
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(Feature.ALLOW_SINGLE_QUOTES, true);//设置可用单引号
objectMapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);//设置字段可以不用双引号包括
JsonNode root = objectMapper.readTree(jsonString);
return root.path("catName").asText() + root.path("carrier").asText();
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
蕃薯耀 2015年9月19日 14:50:37 星期六
http://fanshuyao.iteye.com/
Java使用jackson问题解决的更多相关文章
- paip.java swt 乱码问题解决
paip.java swt 乱码问题解决 看累挂,Dfile.encoding是gbk的.. 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专 ...
- Java 使用 Jackson库 对 JavaMap 进行序列化反序列化
最近在用 java 处理一一些东西,发现 java 对对象进行序列化反序列化比起 python 来还是有些麻烦记录一下. 找了好几个库最后选择了 Jackson 感觉大家对它评价还不错. 将目标从 J ...
- Java 文件句柄泄露问题解决小记(转)
转:Java 文件句柄泄露问题解决小记 维护 WebIDE 免不了要管理很多的文件, 自从我们线上系统增加了资源回收功能,便一直受一个问题困扰:后台线程解绑目录时偶尔报错,看症状因为是某些文件被占用了 ...
- java使用jackson生成和解析JSON
java使用jackson生成和解析JSON 1.导包 2.生成json和解析json package test; import com.fasterxml.jackson.core.JsonProc ...
- Java之Jackson框架
在Jackson框架中,提供了三种方式用来处理JSON数据: 流式API 在该方式下,使用JsonParser读取JSON数据,使用JsonGenerator写JSON数据.这种方式性能最佳(最低开销 ...
- 有关 Java (jackson包问题 ,MappingJacksonHttpMessageConverter 和 MappingJackson2HttpMessageConverter问题)
今天这一系列问题吃掉我四个小时,所以现在吸收掉. 一. 整理所有错误信息: 1.错误信息:java.lang.NoClassDefFoundError: Could not initialize cl ...
- 【Java】Jackson解析xml的坑
为了获取xml数据,在spring mvc中针对 @ResponseBody配置了jackson. 刚用的时候内心是狂喜的,终于不用自己解析了---- but----------还是有坑的-- 坑一 ...
- JAVA文件下载功能问题解决日志
今天给报告系统做了个下载功能,遇到了挺多问题,通过查资料一一解决了. 1.首先遇到的问题是:java后台的输出流输出之后,没有任何报错,浏览器端不弹出保存文件的对话框,原本是ajax请求到后台的con ...
- 【java】jackson 中JsonFormat date类型字段的使用
为了便于date类型字段的序列化和反序列化,需要在数据结构的date类型的字段上用JsonFormat注解进行注解具体格式如下 @JsonFormat(pattern = "yyyy-MM- ...
随机推荐
- 如何解决C#编译中"csc不是内部或外部命令"的问题
安装完 VisualStudio 2010编译环境后,是不能用命令行直接编译写好的csc文件的,如果不配置环境变量,在命令提示符(cmd)中编译扩展名为cs的文件,会出现错误提示“csc不是内部或外部 ...
- 李洪强iOS开发Swift篇—08_函数(2)
李洪强iOS开发Swift篇—08_函数(2) 一.函数类型 函数类型也是数据类型的一种,它由形参类型和返回值类型组成,格式是 (形参类型列表) -> 返回值类型 1 func sum(num1 ...
- PCR理解
http://blog.csdn.net/niehanzi/article/details/4450154 PCR的物理意义: PCR存在于TS包的自适应域中,如下图: PCR用来同步前端编码器和后端 ...
- JavaScript 作用域和变量提升
本文是这篇文章的简单翻译. 如果按照下面的代码按照JavaScript程序的执行方式执行,alert函数会显示什么? var foo = 1; function bar() { if (!foo) { ...
- Android软件开发之发送短信与系统短信库解析
今天我和同学们讨论一下Android平台下如何调用系统方法发送短信.接收短信.系统的短信库相关的问题.进入正题,我们先使用Eclipse工具模拟给自己的模拟器发送一条短信.在Eclipse下打开DDM ...
- hdu4435 charge-station(先建后拆+bfs)
charge-station Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 查看本机上的端口使用情况netstat -an
1.查找本机上的端口使用情况 netstat -an 2.查找指定端口的使用情况 C:\Windows\System32>netstat -ano | find "8002" ...
- bzoj1878
像我这种蒟蒻这道题从在线算法思考基本毫无思路 但是发现题目中只涉及到询问而不涉及到修改,这类题目一般都是离线算法大概 考虑到这题为什么不能直接区间求值,因为区间中同色点会被重复计算(废话) 下面我们就 ...
- 【转】Android中设置TextView的颜色setTextColor--代码中设置字体颜色
原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...
- HTML5与CSS3权威指南.pdf1
第2章 HTML5与HTML4的区别 HTML5的文件扩展符与内容类型保持不变仍为“.html”或“.htm”,内容类型(ContentType)仍为“text/html” DOCTYPE声明: HT ...