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- ...
随机推荐
- 第三章 传奇的开始--Delphi(附读书笔记)
第三章 传奇的开始--Delphi "是惊世之作的Delphi让Borland重新站了起来,没有当初的Delphi,就没有今日的Borland!" "是Turbo Pas ...
- AHOI2006文本编辑器editor
1269: [AHOI2006]文本编辑器editor Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1885 Solved: 683[Submit ...
- 修改mysql 数据库密码
第1种︰使用 mysqladmin命令 shell>mysqladmin -u root password new_password 如果忘记了MySQL的root密码,可以用以下方法重新设置: ...
- HDU-1019 Least Common Multiple
http://acm.hdu.edu.cn/showproblem.php?pid=1019 Least Common Multiple Time Limit: 2000/1000 MS (Java/ ...
- 监控Tomcat并启动
#!/bin/sh export _JAVA_SR_SIGNUM= export JAVA_HOME=/usr/java/jdk1..0_11 export CATALINA_BASE=/home/c ...
- webdriver 操作 Firefox 在关闭浏览器时弹出 “Plugin Container for Firefox已停止工作” 处理办法。
上来先来一个图: 在使用webdriver操作Firefox浏览器的时候,一路顺畅.可是在最后关闭浏览器后,出现了如上面图示的警告!这个警告很早就出现了,因为也不影响测试结果,也就一直没理. 后来新搭 ...
- 今天遇到的mouseout和mouseleave之坑
时间紧 简短的说就是: mouseout是离开其子元素也会触发 mouseleave是离开指定的那个元素才触发
- Web---HTTP请求、重定向、转发和数据压缩
HTTP常用的请求方式包括: GET-最为常见,但发送的数据量很小,发送的数据直接包含到url的后面. POST-可以包含大量数据,数据在请求正文中通过表单进行提交. HEAD,PUT,DELETE. ...
- Bzoj 1674: [Usaco2005]Part Acquisition dijkstra,堆
1674: [Usaco2005]Part Acquisition Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 337 Solved: 162[Sub ...
- c语言的label后面不能直接跟变量申明
; goto JUMP; printf("x is : %d\n",x); JUMP: ; <=== 错误,lable后面不能申明变量,只能是表达式语句(statement) ...