java 后台接受json参数的几种方式_java后台处理解析json字符串的两种方式

这篇博客介绍了Java后台处理JSON字符串的两种方法:一是使用ObjectMapper,二是使用JSONObject。文章通过处理百度地图返回的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为例

com.fasterxml.jackson.core

jackson-databind

${jackson.version}

com.fasterxml.jackson.datatype

jackson-datatype-hibernate4

${jackson.version}

其次在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为例

net.sf.json-lib

json-lib

2.4

jdk15

其次在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数据的两种方法详解二

在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: ...

随机推荐

objective-c系列-动态类型和动态绑定

/* 静态类型: 变量的类型在编译之时就被确定下来. 动态类型: 对象的类型由对象的内存里的某个结构数据来决定它是什么类型, 而不是在编译之时就被确定下来的数据类型. 对象的类型只有在运行时才知道. ...

P1689: [Usaco2005 Open] Muddy roads 泥泞的路

水题,模拟就行了,别忘了L>=r的时候直接更新下一个的L然后continue type node=record l,r:longint; end; var n,l,i,ans:longint; ...

性能测试之LoardRunner 结果分析

性能结果分析是性能测试中的重中之重,也是难点所在,以下总结了看图的一些顺序: 1.首先可以检查Analysis模块提供的Summary Report,整个测试过程中我们所关心的各业务 2.首先关注性能 ...

熊猫猪新系统測试之三:iOS 8.0.2

本来本猫要等到8.1版本号出来后再做測试的,结果等来等去就是迟迟不推送更新呀!说好10月20号的iOS 8.1呢?为了一鼓作气写完,就先不等了.先拿手头的iOS 8.0.2系统做一下測试吧! 8.x系 ...

JavaScript实现模糊推荐的input框(类似百度搜索框)

如何用JS实现一个类似百度搜索框的输入框呢,再填充完失去焦点时,自动填充配置项,最终效果如下图: 实现很简单,但是易用性会上升一大截,需要用到的有jquery-ui的autocomplete,jque ...

C语言之free函数及野指针

[FROM MSDN && 百科] 原型:  void free(void *ptr); #include或#include

PHP错误处理函数register_shutdown_function

当程序在线上运行时,如果遇到BUG,想不在前端输出错误信息,同时能及时邮件通知开发者,register_shutdown_function函数就可以派上用场了. 注册一个会在脚本执行完成或者 exit ...

通过C#/.NET API使用CNTK

(原文)CNTK v2.2.0提供C#API来建立.训练和评估CNTK模型. 本节概要介绍了CNTK C#API. 在CNTK github respository中可以找到C#训练示例. 使用C#/ ...

Python入门-散点图绘制

Python入门-散点图绘制  废话不说 直接上代码 import matplotlib.pyplot as plt x_values = list(range(1,1001)) y_values = ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值