`
阅读更多

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/

2
2
分享到:
评论

相关推荐

    使用Jackson在Java中处理JSON

    本篇文章将深入探讨如何使用Jackson在Java中进行JSON操作。 首先,Jackson库主要由三个模块组成: 1. **Jackson-core**: 这是Jackson库的基础模块,包含了基本的JSON流处理API,如`JsonParser`和`JsonGenerator`,...

    jackson json 转 map 数值科学计数法的问题解决.docx

    Jackson JSON 转 Map 之科学计数法问题解决方案 Jackson 是一个流行的 Java 库,用于将 JSON 数据转换为 Java 对象或 Map。在使用 Jackson 将 JSON 转换为 Map 的过程中,可能会遇到科学计数法的问题。该问题的出现...

    使用jackson完成json与Java对象互转

    在Java开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛用于前后端数据传输。...通过不断的实践和探索,你可以更深入地理解并运用Jackson,解决更多复杂的JSON处理问题。

    Java之Jackson的基本使用案例讲解.pdf

    Jackson是Java中广泛使用的JSON处理库,用于JSON的序列化和反序列化。它具有活跃的社区支持,频繁的更新,以及高效的性能。Jackson在GitHub上的统计数据显示,它是流行的JSON解析器之一,尤其是在SpringMVC框架中...

    jackson 全部jar包

    Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。它提供了高效、功能丰富的处理JSON的方式,包括序列化、反序列化以及数据绑定。在JSON的解析和生成方面,Jackson具有高性能、易用性以及灵活...

    jackson升级jar包2.12.4版本

    为了解决这个问题,Jackson团队发布了2.12.4版本的更新。这个新版本修复了该漏洞,增强了安全性,防止了恶意用户利用此漏洞进行攻击。升级到2.12.4版是保护系统免受此类攻击的重要步骤。升级过程通常包括以下几个...

    jackson-annotations、jackson-core、jackson-databind

    在IT行业中,Jackson库是Java领域广泛使用的JSON处理库,特别是在Spring框架中。"jackson-annotations"、"jackson-core"和"jackson-databind"是Jackson库的三个核心模块,它们协同工作,提供了强大的JSON序列化和反...

    JacksonUtil及Jar包1.9

    Jackson是Java领域中广泛使用的开源库,由FasterXML公司维护,主要用于处理JSON数据。它的核心功能包括将Java对象转换为JSON格式,以及将JSON数据转换回Java对象。Jackson 1.9版本是该库的一个较早版本,尽管现在...

    Jackson 2.9.3 和 jackson 2.9.3源码

    总的来说,熟悉Jackson库的源码有助于提升Java开发者处理JSON数据的能力,无论是为了提高代码质量、优化性能,还是为了解决特定场景下的问题。通过深入学习和理解Jackson 2.9.3的源码,开发者可以更好地利用这个强大...

    jackson-core所需的三个包;jackson-databind.jar,jackson-annotations.jar,jackson-core.jar

    Jackson是Java领域中广泛使用的JSON处理库,它提供了一套高效、灵活的API来解析、生成、转换JSON数据。在Spring MVC框架中,Jackson库通常用于处理HTTP请求和响应中的JSON数据,使得Java对象能够方便地序列化为JSON...

    JJWT.jar与依赖jackson-core.jar、jackson-databind.jar、jackson-annotations

    总的来说,JJWT与Jackson库的结合使用,为Java开发者提供了一个强大且方便的解决方案,用于实现基于JWT的安全认证和授权机制。通过将用户信息编码为JWT,服务器可以减少数据库查询,同时保证数据的安全性,因为JWT...

    多版本jackson-all依赖包

    Jackson是Java领域中广泛使用的JSON处理库,它提供了一套完整的解决方案,包括序列化、反序列化以及数据绑定等功能。`jackson-all`是Jackson早期版本的一个打包集合,包含了所有核心模块,使得开发者可以一次性引入...

    jackson.zip

    Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。这个压缩包“jackson.zip”包含了Jackson库的三个核心组件,分别是: 1. `jackson-annotations-2.8.5.jar`:这是Jackson框架的注解模块,...

    java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingExcepti

    jackson-annotations-2.10.2.jar jackson-core-2.10.2.jar jackson-databind-2.10.2.jar NoClassDefFoundError解决

    json转换工具jackson

    博文链接(已失效)可能涉及实际案例或教程,包括但不限于使用Jackson解析JSON,自定义序列化规则,或者解决特定问题的解决方案。 以上是对Jackson库作为JSON转换工具的关键知识点的概述。通过深入理解和熟练应用...

    jackson2.5-all

    总之,Jackson 2.5-all集合了Jackson库的关键组件,提供了一个全面的解决方案,用于处理Java应用程序中的JSON数据。无论是在Web服务、RESTful API还是其他需要JSON交互的场景,Jackson都是一个值得信赖的工具,其...

    jackson-annotations-2.2.3.jar(Jackson解析需引入的包)

    Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。该库提供了一整套解决方案,包括序列化、反序列化以及数据绑定等功能,使得在Java应用程序中处理JSON数据变得非常便捷。标题提到的"jackson-...

    jackson-2.8.11.jar

    Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司维护。它的核心组件包括三个主要部分:jackson-annotations、jackson-core和jackson-databind,这恰好对应了给定的文件名"jackson-annotations-2.8.11.jar...

    jackson-all-1.9.11.jar.zip

    Jackson是Java世界中广泛使用的JSON库,主要用于处理JSON序列化和反序列化任务。...而"jackson-all-1.9.11.jar.zip"这个压缩包则为那些需要在项目中使用Jackson库的开发者提供了一站式的解决方案。

Global site tag (gtag.js) - Google Analytics