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/
相关推荐
本篇文章将深入探讨如何使用Jackson在Java中进行JSON操作。 首先,Jackson库主要由三个模块组成: 1. **Jackson-core**: 这是Jackson库的基础模块,包含了基本的JSON流处理API,如`JsonParser`和`JsonGenerator`,...
Jackson JSON 转 Map 之科学计数法问题解决方案 Jackson 是一个流行的 Java 库,用于将 JSON 数据转换为 Java 对象或 Map。在使用 Jackson 将 JSON 转换为 Map 的过程中,可能会遇到科学计数法的问题。该问题的出现...
在Java开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛用于前后端数据传输。...通过不断的实践和探索,你可以更深入地理解并运用Jackson,解决更多复杂的JSON处理问题。
Jackson是Java中广泛使用的JSON处理库,用于JSON的序列化和反序列化。它具有活跃的社区支持,频繁的更新,以及高效的性能。Jackson在GitHub上的统计数据显示,它是流行的JSON解析器之一,尤其是在SpringMVC框架中...
Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。它提供了高效、功能丰富的处理JSON的方式,包括序列化、反序列化以及数据绑定。在JSON的解析和生成方面,Jackson具有高性能、易用性以及灵活...
为了解决这个问题,Jackson团队发布了2.12.4版本的更新。这个新版本修复了该漏洞,增强了安全性,防止了恶意用户利用此漏洞进行攻击。升级到2.12.4版是保护系统免受此类攻击的重要步骤。升级过程通常包括以下几个...
在IT行业中,Jackson库是Java领域广泛使用的JSON处理库,特别是在Spring框架中。"jackson-annotations"、"jackson-core"和"jackson-databind"是Jackson库的三个核心模块,它们协同工作,提供了强大的JSON序列化和反...
Jackson是Java领域中广泛使用的开源库,由FasterXML公司维护,主要用于处理JSON数据。它的核心功能包括将Java对象转换为JSON格式,以及将JSON数据转换回Java对象。Jackson 1.9版本是该库的一个较早版本,尽管现在...
总的来说,熟悉Jackson库的源码有助于提升Java开发者处理JSON数据的能力,无论是为了提高代码质量、优化性能,还是为了解决特定场景下的问题。通过深入学习和理解Jackson 2.9.3的源码,开发者可以更好地利用这个强大...
Jackson是Java领域中广泛使用的JSON处理库,它提供了一套高效、灵活的API来解析、生成、转换JSON数据。在Spring MVC框架中,Jackson库通常用于处理HTTP请求和响应中的JSON数据,使得Java对象能够方便地序列化为JSON...
总的来说,JJWT与Jackson库的结合使用,为Java开发者提供了一个强大且方便的解决方案,用于实现基于JWT的安全认证和授权机制。通过将用户信息编码为JWT,服务器可以减少数据库查询,同时保证数据的安全性,因为JWT...
Jackson是Java领域中广泛使用的JSON处理库,它提供了一套完整的解决方案,包括序列化、反序列化以及数据绑定等功能。`jackson-all`是Jackson早期版本的一个打包集合,包含了所有核心模块,使得开发者可以一次性引入...
Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。这个压缩包“jackson.zip”包含了Jackson库的三个核心组件,分别是: 1. `jackson-annotations-2.8.5.jar`:这是Jackson框架的注解模块,...
jackson-annotations-2.10.2.jar jackson-core-2.10.2.jar jackson-databind-2.10.2.jar NoClassDefFoundError解决
博文链接(已失效)可能涉及实际案例或教程,包括但不限于使用Jackson解析JSON,自定义序列化规则,或者解决特定问题的解决方案。 以上是对Jackson库作为JSON转换工具的关键知识点的概述。通过深入理解和熟练应用...
总之,Jackson 2.5-all集合了Jackson库的关键组件,提供了一个全面的解决方案,用于处理Java应用程序中的JSON数据。无论是在Web服务、RESTful API还是其他需要JSON交互的场景,Jackson都是一个值得信赖的工具,其...
Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。该库提供了一整套解决方案,包括序列化、反序列化以及数据绑定等功能,使得在Java应用程序中处理JSON数据变得非常便捷。标题提到的"jackson-...
Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司维护。它的核心组件包括三个主要部分:jackson-annotations、jackson-core和jackson-databind,这恰好对应了给定的文件名"jackson-annotations-2.8.11.jar...
Jackson是Java世界中广泛使用的JSON库,主要用于处理JSON序列化和反序列化任务。...而"jackson-all-1.9.11.jar.zip"这个压缩包则为那些需要在项目中使用Jackson库的开发者提供了一站式的解决方案。