上次后端经过模拟http请求百度地图接口,获得的是一个json字符串,而我只须要其中的某个key对应的value。html
当时我是经过截取字符串取的,后来以为不太合理,今天整理出了两种处理解析json字符串的方式。java
供你们参考。json
顺便说一下所解析的字符串必定要是“{”开始,“}”结束,后端
而百度地图返回数据是这样的app
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}})
因此在解析前我加了这行代码ui
String subData = dataStr.substring(dataStr.indexOf("(") + 1, dataStr.lastIndexOf(")"));
这里以2.4version为例spa
<!-- 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>
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
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("\"","");
}
最后获得须要的经纬度信息hibernate
这里以2.4version为例code
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
import net.sf.json.JSONObject;
import net.sf.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); }
最后获得须要的经纬度信息orm