java后台处理解析json字符串的两种方式
简单说一下背景
上次后端通过模拟http请求百度地图接口,得到的是一个json字符串,而我只需要其中的某个key对应的value。
当时我是通过截取字符串取的,后来觉得不太合理,今天整理出了两种处理解析json字符串的方式。
供大家参考。
顺便说一下所解析的字符串一定要是“{”开始,“}”结束,
而百度地图返回数据是这样的
renderReverse&&renderReverse({"status":0,"result":{"location":{"lng":116.23412299999993,"lat":40.234523047443769},"formatted_address":"北京市昌平区北环路54号楼","business":"昌平县城","addressComponent":{"country":"中国","country_code":0,"country_code_iso":"CHN","country_code_iso2":"CN","province":"北京市","city":"北京市","city_level":2,"district":"昌平区","town":"","adcode":"110114","street":"北环路","street_number":"54号楼","direction":"附近","distance":"27"},"pois":[],"roads":[],"poiRegions":[{"direction_desc":"内","name":"北环里小区","tag":"房地产;住宅区","uid":"dc0f0adc0773a420f8221312"}],"sematic_description":"北环里小区内,双海包装制品厂北299米","cityCode":131}})
所以在解析前我加了这行代码
String subData = dataStr.substring(dataStr.indexOf("(") + 1, dataStr.lastIndexOf(")"));
第一种(ObjectMapper)
首先在pom文件配置需要的jar
这里以2.4version为例
<!-- JSON -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate4</artifactId>
<version>${jackson.version}</version>
</dependency>
其次在java类中引入需要的外部类
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
最后处理百度地图返回的json串
if("" != dataStr){
ObjectMapper objectMapper = new ObjectMapper();
String subData = dataStr.substring(dataStr.indexOf("(") + 1, dataStr.lastIndexOf(")"));
JsonNode jsonNode = objectMapper.readTree(subData);
adcode = jsonNode.get("result").get("addressComponent").get("adcode").toString().replace("\"","");
}
最后得到需要的经纬度信息
第二种(JSONObject)
首先在pom文件配置需要的jar
这里以2.4version为例
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
其次在java类中引入需要的外部类
import net.sf.json.JSONObject;
import net.sf.json.JSON;
最后处理百度地图返回的json串
String subData = dataStr.substring(dataStr.indexOf("(") + 1, dataStr.lastIndexOf(")"));
JSONObject jsonData = JSONObject.fromObject(subData);
JSONObject result = (JSONObject) jsonData.get("result");
JSONObject location = (JSONObject) result.get("location");
if(null != location.get("lng") && null != location.get("lat")){
String lng = location.get("lng").toString();
String lat = location.get("lat").toString();
doubles[0] = Double.parseDouble(lng);
doubles[1] = Double.parseDouble(lat);
}
最后得到需要的经纬度信息
java后台处理解析json字符串的两种方式的更多相关文章
- Java构造和解析Json数据的两种方法详解二
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...
- Java构造和解析Json数据的两种方法详解二——org.json
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...
- Java构造和解析Json数据的两种方法详解一——json-lib
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...
- spring接收json字符串的两种方式
一.前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到.自己测试接口时使用postman的form- ...
- Java解析Json数据的两种方式
JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...
- Java构造和解析Json数据的两种方法详解一
一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.js ...
- Gson解析复杂JSON字符串的两种方式
JSON解析可以使用的库: JSONObject(源自Android官方). Gson(源自Google). Jackson(第三方开源库). FastJSON(第三方开源库). 本文例子使用Goog ...
- Java - 格式化输出JSON字符串的两种方式
目录 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 1.2 Java示例代码 2 使用谷歌的gson 2.1 项目的pom.xml依赖 2.2 Java示例代码 1 使用阿里的fa ...
- Gson的解析Json数据的两种方式
转载:https://blog.csdn.net/huplion/article/details/78984977 在线JSON字符串转Java实体类(JavaBean.Entity): https: ...
随机推荐
- 洛谷P3402 最长公共子序列
题目背景 DJL为了避免成为一只咸鱼,来找Johann学习怎么求最长公共子序列. 题目描述 经过长时间的摸索和练习,DJL终于学会了怎么求LCS.Johann感觉DJL孺子可教,就给他布置了一个课后作 ...
- XMLHttpRequest 对象-回调函数
回调函数是一种以参数形式传递给另一个函数的函数. 如果您的网站上存在多个 AJAX 任务,那么您应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 AJAX 任务调用该函数. ...
- 51. ExtJs4之Ext.util.JSON编码和解码JSON对象
转自:https://blog.csdn.net/iteye_9439/article/details/82518158 1.decode() 该方法用于将符合JSON格式的String进行解码成为一 ...
- leetcode快排相关
leetcode:75颜色分类(3way).215数组中的第K个最大元素(normal) 3way private static void quick3waySort(int[] arr, int l ...
- redis过期策略和内存淘汰机制
目录 常见的删除策略 redis使用的过期策略:定期删除+惰性删除 定期删除 惰性删除 为什么要采用定期删除+惰性删除2种策略呢? redis内存淘汰机制 常见的删除策略 1.定时删除:在设置键的过期 ...
- mahjong
题目描述 “为什么, 你们的力量在哪里得到如此地......”“我们比 1 分钟前的我们还要进步, 虽然很微小, 但每转一圈就会前进一寸.这就是钻头啊!”“那才是通向毁灭的道路.为什么就没有意识到螺旋 ...
- easyui textbox 内容改变事件 增加oninpu 类似事件,
//======================利用easyui验证功能,进行内容变化监控=== =============$(function () { var CustomerService = ...
- vue-clickoutside d
js文件 export default { bind(el, binding, vnode) { function documentHandler(e) { if (el.contains(e.tar ...
- Oracle12C用户创建、授权、登录
Oracle12C用户创建.授权.登录 1.以系统用户登录 C:\Users\LEI>sqlplus sys/dwh as sysdba; SQL*Plus: Release 12.1.0.2. ...
- Anaconda——Python包管理工具
Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能 主要用于Python包管理和版本管理. 下载地址:https:/ ...