109.【Java最全腾讯地图接口】(四)

简介: 109.【Java最全腾讯地图接口】

(3).关键词搜索行政区划
package com.jsxs.TentcentMap.AdministrativeDivision;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jsxs.TencentMapUtils.TencentMapUtils;
/**
 * @Author Jsxs
 * @Date 2023/4/6 21:22
 * @PackageName:com.jsxs.TentcentMap.AdministrativeDivision
 * @ClassName: keywordsAdministrativeDivision
 * @Description: TODO  关键词行政区划
 * @Version 1.0
 */
public class keywordsAdministrativeDivision {
    public static JSONArray getKeywordsAdministrativeDivision(String keywords,String key){
        String keyURL="https://apis.map.qq.com/ws/district/v1/search?&keyword="+keywords+"&key="+key;
        String s = TencentMapUtils.getTencentMap(keyURL).toString();
        JSONObject jsonObject = JSONObject.parseObject(s);
        JSONArray result = (JSONArray)jsonObject.get("result");
        return result;
    }
    public static void main(String[] args) {
        JSONArray array = getKeywordsAdministrativeDivision("周口", "xxxx");
        JSONArray jsonArray = array.getJSONArray(0);
        for (int i = 0; i < jsonArray.size(); i++) {
            System.out.println("邮政编号:"+jsonArray.getJSONObject(i).get("id")+"->"+jsonArray.getJSONObject(i).get("fullname")+" ->详细地址:"+jsonArray.getJSONObject(i).get("address"));
        }
    }
}

(二)、JSON

概述

阿里巴巴提供的一个json快速转换工具类,实现了Map接口,通过Key Value形式存储数据,初始化大小为16,有参构造方法需要传入一个Map。

项目中实际用途:

用于Json转具体的Object实体类,或者String快速转JSON格式,都可以用或者有的数据属性变化较多,暂时不想定义一个POJO接参,就可以用JSONObject先接着。

1.导入依赖

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.26</version>
        </dependency>

2.JSON的常用转换

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
import java.util.Map;
/**
 * @Author Jsxs
 * @Date 2023/4/5 5:59
 * @PackageName:PACKAGE_NAME
 * @ClassName: testJSON
 * @Description: TODO
 * @Version 1.0
 */
public class testJSON {
    public static void main(String[] args) {
        Student student = new Student("李明",21);
        // 1. Java对象转化为JSON字符串
        String s = JSONObject.toJSONString(student); // 第一个参数是: Java对象
        System.out.println("1.对象转换为JSON字符串->  "+s);
        // 2. Java对象转换为Object对象
        Object o = JSONObject.toJSON(student);  // 第一个参数是: Java对象
        System.out.println("2.Java对象转换为Object对象->  "+o);
        // 3. (JSON)字符串转换为JSON对象 ⭐
        JSONObject jsonObject = JSONObject.parseObject(s); // 第一个参数是: JSON字符串
        System.out.println("3.JSON字符串转换为JSON对象->  "+jsonObject);
        // 4. JSON字符串转换为Object对象
        Object parse = JSONObject.parse(s); // 第一个参数是: JSON字符串
        System.out.println("4.JSON字符串转换为Object对象-> "+parse);
        // 5.JSON对象转换为Java对象
        Student student1 = JSONObject.toJavaObject(jsonObject, Student.class);// 第一个参数是: json对象;第二个参数是: 类名.class
        System.out.println("5.JSON对象转换为Java对象->  "+student1);
        // 6.JSON字符串转换为Map类型
        Map map = JSONObject.parseObject(s, Map.class); // 第一个参数是: JSON字符串;第二个参数是: Map.class
        System.out.println("6.JSON字符串转换为List类型-> "+map);
        // 7.JSON对象转换为List类型的JSON集合
        List lists = JSONObject.parseArray(JSONObject.toJSONString(jsonObject), List.class); // 第一个参数是JSON字符串;第二个是List.class
        System.out.println("7.JSON对象转换为List类型的JSON集合->  "+lists);
        // 8.JSON类型的集合转
//        // 9.JSON字符串转JSON数组 ----- 没有运行成功!!!!
//        JSONArray objects = JSONObject.parseArray(s);  // 第一个参数是: JSON数组
//        System.out.println("9.JSON字符串转JSON数组-> "+objects);
        // 10.JSON字符串转Java对象
        Student student2 = JSONObject.parseObject(s, Student.class);// 第一个参数是: JSON字符串;第二个参数是: 类.class
        System.out.println("10.JSON字符串转Java对象-> "+student2);
    }
}

3.JSON的二种定义方式

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @Author Jsxs
 * @Date 2023/4/5 5:59
 * @PackageName:PACKAGE_NAME
 * @ClassName: testJSON
 * @Description: TODO
 * @Version 1.0
 */
public class testJSON {
    public static void main(String[] args) throws Exception {
        // (1)通过无参构造直接设值
        JSONObject object = new JSONObject();
        object.put("id",123);
        object.put("name","jojo");
        System.out.println("JSONObject:"+object.toString());
        // (2)将JSON对象转成具体的POJO
        Student student = JSONObject.toJavaObject(object, Student.class);
        System.out.println("转换成Demo实体类:"+student.toString());
        // (3)传入Map的有参构造方法创建
        Map<String,Object> myMap = new HashMap<>(2);
        myMap.put("id",123);
        myMap.put("name","test");
        JSONObject newObject = new JSONObject(myMap);
        System.out.println("通过有参构造传入Map创建出来的:"+newObject);
        // (4)将String转JSONObject
        String demoString = "{name:\"test\", id:123}";
        JSONObject demoJson = JSONObject.parseObject(demoString);
        System.out.println("String转Object : "+demoJson);
    }
}

4.String格式的List转List

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @Author Jsxs
 * @Date 2023/4/5 5:59
 * @PackageName:PACKAGE_NAME
 * @ClassName: testJSON
 * @Description: TODO
 * @Version 1.0
 */
public class testJSON {
    public static void main(String[] args) throws Exception {
        String listStr = "[{\"id\":1,\"name\":\"vivi\"},{\"id\":2,\"name\":\"jojo\"}]";
        // (1)转Json List
        JSONArray jsonArray = JSONArray.parseArray(listStr);
        System.out.println(jsonArray);
        // (2)转具体的List<实体类>
        List<Student> listDemo = jsonArray.toJavaList(Student.class);
        for (Student demo : listDemo){
            System.out.println(demo.toString());
        }
    }
}

5.遍历JSONArray

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @Author Jsxs
 * @Date 2023/4/5 5:59
 * @PackageName:PACKAGE_NAME
 * @ClassName: testJSON
 * @Description: TODO
 * @Version 1.0
 */
public class testJSON {
    public static void main(String[] args) throws Exception {
        String listStr = "[{\"id\":1,\"name\":\"vivi\"},{\"id\":2,\"name\":\"jojo\"}]";
        // (1)转Json List
        JSONArray jsonArray = JSONArray.parseArray(listStr);
        System.out.println(jsonArray);
        // (2) 循环遍历JsonArray
        for (int i = 0; i < jsonArray.size(); i++) {
            System.out.println(jsonArray.getJSONObject(i));
            System.out.println(jsonArray.getJSONObject(i).get("name"));
        }
    }
}

6.遍历JSONObject

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @Author Jsxs
 * @Date 2023/4/5 5:59
 * @PackageName:PACKAGE_NAME
 * @ClassName: testJSON
 * @Description: TODO
 * @Version 1.0
 */
public class testJSON {
    public static void main(String[] args) throws Exception {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("1","a");
        jsonObject.put("2","b");
        jsonObject.put("3","c");
        for (String a : jsonObject.keySet()){
            System.out.println("key:"+a+";Value:"+jsonObject.get(a));
        }
    }
}

相关文章
|
7天前
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
28 7
|
7天前
|
前端开发 JavaScript Java
【前端学java】Java中的接口和枚举概念(8)
【8月更文挑战第9天】Java中的接口和枚举概念(8)
24 4
|
4天前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
11天前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
39 8
|
11天前
|
数据采集 Java API
java接口防爬虫
8月更文挑战第9天
|
11天前
|
安全 算法 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(下)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
49 6
|
11天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(中)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
51 5
|
4天前
|
Java
SpringBoot java 一个接口,多个实现,客户定制化
SpringBoot java 一个接口,多个实现,客户定制化
10 0
|
4天前
|
Java API
Java9 Lambda 设计和实现问题之IntStream, LongStream 等类型特定的流接口基于 AbstractPipeline 是如何实现的
Java9 Lambda 设计和实现问题之IntStream, LongStream 等类型特定的流接口基于 AbstractPipeline 是如何实现的
|
5天前
|
自然语言处理 NoSQL Java
一天一道Java面试题----第十二天(如何实现接口幂等性)
这篇文章探讨了实现Java接口幂等性的几种方法,包括使用唯一ID、服务端token、去重表、版本控制以及控制状态等策略。