• 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);
    }

    最后得到需要的经纬度信息

  • 相关阅读:
    linux常用命令(18)find exec
    linux常用命令(17)find命令概览
    linux常用命令(16)locate命令
    linux常用命令(15)whereis命令
    linux常用命令(14)which命令
    linux常用命令(13)tail命令
    linux常用命令(12)head命令
    linux常用命令(11)less命令
    linux常用命令(10)more命令
    linux常用命令(9)nl命令
  • 原文地址:https://www.cnblogs.com/meng-ma-blogs/p/9330002.html
Copyright © 2020-2023  润新知