목차
Java는 인터페이스를 호출하여 json 데이터를 가져와 데이터베이스에 저장합니다
메서드를 구현하여 인터페이스를 호출하고 Json 문자열을 구문 분석한 후 데이터베이스에 저장합니다.
API 인터페이스를 통해 json 문자열 가져오기
JSONArray 및 JSONObject를 사용하여 json 문자열을 구문 분석합니다
인스턴스화된 객체의 데이터를 데이터베이스에 저장하세요
Java java지도 시간 Java는 어떻게 인터페이스를 호출하여 json 데이터를 얻고 이를 구문 분석한 후 데이터베이스에 저장합니까?

Java는 어떻게 인터페이스를 호출하여 json 데이터를 얻고 이를 구문 분석한 후 데이터베이스에 저장합니까?

May 14, 2023 am 10:58 AM
java json 데이터 베이스

    Java는 인터페이스를 호출하여 json 데이터를 가져와 데이터베이스에 저장합니다

    1. yml 파일에 정의된 인터페이스 URL을 구성합니다

        //自己定义的JSON接口URL
        blacklist_data_url: 接口URL

    2. 컨트롤러에 요청 메서드와 경로를 추가합니다

        /**
         * @Title: 查询
         * @Description: 查询车辆的记录
         * @Author: 半度纳
         * @Date: 2022/9/27 17:33
         */
        @GetMapping("/Blacklist")
        public void selectBlacklist(){
            boolean a = imBuBlacklistService.selectBlacklist();//调用业务层方法
        }

    . 3. 서비스 메서드

        /**
         * @Title: 查询
         * @Description: 查询车辆的记录
         * @Author: 半度纳
         * @Date: 2022/9/27 17:33
         * @return
         */
        public boolean selectBlacklist();//返回值类型没要求

    4에 추가합니다. ServiceImpl에서

        import cn.hutool.json.JSONArray;
        import cn.hutool.json.JSONObject;
        import com.alibaba.fastjson2.JSON;
     
     
        @Value("${blacklist_data_url}")
        public String blacklist_data_url;//接口URL
     
     
        /**
         * @Title: 查询
         * @Description: 查询车辆的记录
         * @Author: 半度纳
         * @Date: 2022/9/27 17:33
         * @return
         */
        @Override
        public boolean selectBlacklist() {
            //获取的JSON接口数据(在输出测试时sendGet方法可能会自动输出,具体需看底层代码)
            String list= HttpUtils.sendGet(blacklist_data_url);
            JSONObject j = JSON.parseObject(list);//将获取的JSON数据存储到变量中
            if(j.getBoolean("success")){//获取success判断是否为空
                JSONObject jsonData = j.getJSONObject("body");//解析JSON的body
                JSONArray jsonArray = jsonData.getJSONArray("data");//解析JSON的data数据
                JSONObject row = null;//定义一个空变量
                ImBuBlacklist buBlacklist=new ImBuBlacklist();//new一个实体类用来接收数据
                for (int y = 0; y < jsonArray.size(); ++y) {//循环将JSON数据存储到数据库中
                    buBlacklist = new ImBuBlacklist();//new一个实体类存储数据
                    row = jsonArray.getJSONObject(y);//获取数组中的数据
                       //设置获取到的JSON号牌号码到实体类的相同字段中
                    buBlacklist.setPlateNumber(row.getString("mechanicalNumber"));
                    //设置获取到的JSON车辆类型到实体类的相同字段中
                    buBlacklist.setVehicleType(row.getString("machType"));
                    //设置获取到的JSON检查日期到实体类的相同字段中
                       buBlacklist.setExamineDate(row.getDate("createDate"));
                    //设置获取到的JSON检查地点到实体类的相同字段中
                    buBlacklist.setExamineAddress(row.getString("machineAddr"));
                    //设置获取到的JSON违规行为到实体类的相同字段中
                    buBlacklist.setIllegalBehavior(row.getString("joinTheBlacklistReason"));
                    //设置获取到的JSON黑名单类型到实体类的相同字段中
                    buBlacklist.setBlacklistType(row.getInteger("violations"));
                    //通过mapper的新增方法,把实体类中的JSON数据存到数据库中
                    imBuBlacklistMapper.insertImBuBlacklist(buBlacklist);
                }
                return true;//自己定义的返回值(没有用)
            }else{
                return false;
            }
        }

    메서드를 구현하여 인터페이스를 호출하고 Json 문자열을 구문 분석한 후 데이터베이스에 저장합니다.

    API 인터페이스를 통해 json 문자열 가져오기

    Get get(httpGet) 요청을 통한 인터페이스 데이터, HttpClient 기본 분석 사용 6단계:

    • HttpClient 인스턴스 생성

    • 특정 연결 메서드의 인스턴스 생성

    • HttpClient 인스턴스의 실행 메서드를 호출하여 실행 요청 메소드

    • 응답 읽기

    • 실행 메소드 성공 여부에 관계없이 연결 해제

    //创建httpClient实例
    CloseableHttpClient client = HttpClients.createDefault();
    //汽车之家api接口
    String apiPath = "https://www.autohome.com.cn/ashx/index/GetHomeFindCar.ashx";
    //创建get方法请求实例
    HttpGet httpGet = new HttpGet(apiPath);
    //添加表头,text/xml表示XML格式
    httpGet.addHeader("content-type","text/xml");
    //调用HttpClient实例执行GET实例,返回response
    HttpResponse response = client.execute(httpGet);
    //解析response,这个过程主要取决于获取的json格式,是一个对象还是一个数组,放到后面详解
    String result = EntityUtils.toString(response.getEntity());
    //释放连接
    response.close();
    client.close();

    응답 상태를 판단하고 데이터를 얻었는지 확인할 수 있습니다. 페이지 요청 중 200개 요청 성공, 303 리디렉션, 400개 요청 오류, 401 승인 안 됨, 403 액세스 금지, 404 파일 찾을 수 없음, 500 서버 오류입니다.

    (HttpStatus.OK = 200;HttpStatus.BAD_REQUEST = 400; HttpStatus.FORBIDDEN = 403;HttpStatus.NOT_FOUND = 404;HttpStatus.SERVICE_UN AVAILABLE =500)

    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
        String result = EntityUtils.toString(response.getEntity());//解析response
    }//getStatusLine()方法返回保存请求状态的StatusLine对象,getStatusCode()获取状态码

    JSONArray 및 JSONObject를 사용하여 json 문자열을 구문 분석합니다

    json 문자열을 구문 분석하기 전에 먼저 json 문자열의 형식을 결정해야 합니다. 다양한 형식에 대해 다양한 구문 분석 방법을 사용하세요. 다음은 몇 가지 일반적인 json 문자열입니다. Format

    예: 숫자 값, 문자열, 배열, 배열 개체 중요한 점은 중괄호와 대괄호를 사용하는 것입니다. 이 두 기호에 주의하세요. json 파싱 오류가 발생할 수 있습니다.

    //json数值
    {
        "key" : 520,
        "key1" : 1314
    }    
    //json字符串
    {
        "key" : "我爱你",
        "key1" : "一生一世"
    }
    //json数组
    {
        "key" : [520, 1314],
        "key1" : [520, 3344]
    }
    //json对象数组
    {
        "我" : [
                      {"key": "我爱你"},
                      {"key1": "一生一世"}
        ]
    }
    //json数组对象
    {
        "我" : {
                      [520,1314],
                      ["我爱你", "一生一世"]
        }
    }

    Java는 어떻게 인터페이스를 호출하여 json 데이터를 얻고 이를 구문 분석한 후 데이터베이스에 저장합니까?

    Autohome에서 얻은 json 문자열이 json 배열 형식임을 알 수 있으므로 JSONArray를 사용하여 파싱한 후 traverse해야 합니다.

    //将json字符串解析成json数组的形式
    JSONArray jsonArray = JSONArray.parseArray(result);
    //利用遍历解析json数组,并在循环中解析每一个json对象
    for (int i = 0; i < jsonArray.size(); i++) {
        //将json数组解析为每一个jsonObject对象
        JSONObject object=jsonArray.getJSONObject(i);
        //实例化一个dao层或者domain层的对象
        CarBrand Brand = new CarBrand();
        //将json对象中的数据写入实例化的对象中
        //注意object读取的字段要和json对象中的字段一样,否则无法解析
        Brand.setId(object.getInteger("id"));
        Brand.setName(object.getString("name"));
        Brand.setGroup(object.getString("letter"));
    }

    인스턴스화된 객체의 데이터를 데이터베이스에 저장하세요

    springboot 프레임워크에서 mybatis-generator는 도메인 계층 엔터티 파일, xml 파일을 생성할 수 있습니다. , 매퍼 파일 및 해당 서비스 파일을 사용하면 SQL 문을 작성할 때 서비스 계층에서 해당 메서드를 직접 호출할 수 있습니다.

    //调用service层的add方法,直接将实例化对象写入数据库
    CarBrandService.add(Brand);

    전체 코드는 다음과 같습니다

    package org.linlinjava.litemall.admin.service;
     
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import org.apache.http.HttpResponse;
    import org.apache.http.HttpStatus;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    import org.linlinjava.litemall.db.dao.LitemallCarBrandMapper;
    import org.linlinjava.litemall.db.domain.LitemallCarBrand;
    import org.linlinjava.litemall.db.service.LitemallCarBrandService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
     
    import java.time.LocalDateTime;
    import java.util.List;
    import java.util.Map;
     
     
    @Service
    public class AdminCarBrandService {
     
     
     
        @Autowired
        CarBrandService carBrandService;
     
     
        public void httpRequest() {
        
            //使用httpclient获取api数据
            CloseableHttpClient client = HttpClients.createDefault();
            String apiPath = "https://www.autohome.com.cn/ashx/index/GetHomeFindCar.ashx";
            HttpGet httpGet = new HttpGet(apiPath);
            try{
                httpGet.addHeader("content-type","text/xml");
                HttpResponse response = client.execute(httpGet);
                if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                    //对获取的string数据进行json解析
                    String result = EntityUtils.toString(response.getEntity());
                    JSONArray jsonArray = JSONArray.parseArray(result);
     
                    for (int i = 0; i < jsonArray.size(); i++) {
                        //将json对象中的数据写入实例化对象中
                        CarBrand carBrand = new CarBrand();
                        JSONObject object=jsonArray.getJSONObject(i);
                        carBrand.setId(object.getInteger("id"));
                        carBrand.setName(object.getString("name"));
                        carBrand.setGroup(object.getString("letter"));
     
                        //将实例化对象存入数据库
                        carBrandService.add(CarBrand);
                    }
     
                }
            }catch (Exception e){
                throw new RuntimeException(e);
            }
     
        }
    }

    위 내용은 Java는 어떻게 인터페이스를 호출하여 json 데이터를 얻고 이를 구문 분석한 후 데이터베이스에 저장합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

    핫 AI 도구

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Stock Market GPT

    Stock Market GPT

    더 현명한 결정을 위한 AI 기반 투자 연구

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

    중국어 버전, 사용하기 매우 쉽습니다.

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

    신 수준의 코드 편집 소프트웨어(SublimeText3)

    뜨거운 주제

    Java에서 파일을 만드는 방법 Java에서 파일을 만드는 방법 Sep 21, 2025 am 03:54 AM

    usefile.createnewfile () to reatefileonlyifitdoesn'texist, 피하기;

    Java의 ClassPath에 JAR 파일을 추가하는 방법은 무엇입니까? Java의 ClassPath에 JAR 파일을 추가하는 방법은 무엇입니까? Sep 21, 2025 am 05:09 AM

    -CP 매개 변수를 사용하여 JVM이 ClassPath에 추가하여 JAVA -Clibrary.jarcom.example.Main과 같은 내부 클래스 및 리소스를로드 할 수 있으며, 이는 세미콜론 또는 콜론으로 분리 된 여러 항아리를 지원하며 클래스 경로 환경 변수 또는 Manifest.MF를 통해 구성 할 수 있습니다.

    실시간 시스템에 결정적인 응답 보장이 필요한 이유는 무엇입니까? 실시간 시스템에 결정적인 응답 보장이 필요한 이유는 무엇입니까? Sep 22, 2025 pm 04:03 PM

    실시간 시스템은 결과 전달 시간에 달려 있기 때문에 결정 론적 응답이 필요합니다. 하드 실시간 시스템은 엄격한 마감일이 필요하고, 누락 된 경우, 부드러운 실시간은 때때로 지연을 허용합니다. 스케줄링, 인터럽트, 캐시, 메모리 관리 등과 같은 비 결정적 요인 등은 타이밍에 영향을 미칩니다. 건설 계획에는 RTO, WCET 분석, 리소스 관리, 하드웨어 최적화 및 엄격한 테스트 선택이 포함됩니다.

    JSON 문자열을 JavaScript 객체에 구문 분석하는 방법 JSON 문자열을 JavaScript 객체에 구문 분석하는 방법 Sep 21, 2025 am 05:43 AM

    JSON 문자열을 JavaScript 객체에 구문 분석하려면 JSON.PARSE () 메소드를 사용해야합니다.이 메소드는 유효한 JSON 문자열을 해당 JavaScript 객체로 변환 할 수 있으며 중첩 된 개체 및 배열을 구문 분석하지만 잘못된 JSON에 오류가 발생합니다. 따라서 시도를 사용해야합니다 ... 예외를 처리하려면 캐치를 사용해야합니다. 동시에 날짜 문자열을 날짜 개체로 변환하여 안전하고 신뢰할 수있는 데이터 변환을 달성하는 등 두 번째 매개 변수의 재생 함수를 통해 구문 분석 중 값을 변환 할 수 있습니다.

    UC Browser_uc 브라우저의 강제 스케일링 웹 페이지에 의해 웹 페이지를 강제로 스케일링하는 방법 UC 브라우저 UC Browser_uc 브라우저의 강제 스케일링 웹 페이지에 의해 웹 페이지를 강제로 스케일링하는 방법 UC 브라우저 Sep 24, 2025 pm 04:54 PM

    먼저 UC 브라우저의 내장 스케일링 기능을 활성화하고 설정 → 설정 찾아보기 → 글꼴 및 조판 또는 페이지 스케일링을 선택하고 사전 설정 비율 또는 사용자 정의 백분율을 선택하십시오. 둘째, 두 손가락으로 제스처를 열거 나 꼬아서 페이지 디스플레이 크기를 강제 할 수 있습니다. 스케일링을 제한하는 웹 페이지의 경우 웹 사이트의 데스크탑 버전을 요청하여 제한 사항을 잠금 해제 할 수 있습니다. 고급 사용자는 주소 표시 줄에서 JavaScript 코드를 실행하여보다 유연한 강제 스케일링 효과를 달성하여 뷰포트 속성을 수정할 수 있습니다.

    PHP에서 JSON 객체를 만드는 방법? PHP에서 JSON 객체를 만드는 방법? Sep 22, 2025 am 04:13 AM

    JSON_ENCODE () 함수를 사용하여 PHP 배열 또는 객체를 JSON 문자열로 변환하십시오. 예를 들어, 연관 배열 [ "name"=> "john", "age"=> 30, "city"=> "newyork"] 출력 { "name": "John", "Age": 30, "City": "Newyork & &"

    Microsoft Edge High CPU 사용 Microsoft Edge High CPU 사용 Sep 24, 2025 am 12:17 AM

    Edge는 Chromium 커널을 기반으로 한 자원의 높은 소비와 멀티 탭 페이지, 플러그인 실행, 웹 사이트 스크립트 및 렌더링 메커니즘과 같은 요소로 인해 높은 CPU를 차지합니다. 솔루션은 다음과 같습니다. 1. 백그라운드의 부담을 줄이기 위해 불필요한 확장; 2. 유휴 태그 자원의 사용을 줄이기 위해 "수면 태그"기능을 활성화하십시오. 3. 백그라운드 프로세스를 정리하고 GPU 렌더링 관련 설정을 닫습니다. 4. 브라우저 및 시스템을 업데이트하여 호환성 및 성능 최적화를 보장하십시오.

    Java에서 호출 방법의 이름을 얻는 방법은 무엇입니까? Java에서 호출 방법의 이름을 얻는 방법은 무엇입니까? Sep 24, 2025 am 06:41 AM

    대답은 thread.currentThread ()를 사용하여 호출 메소드 이름을 얻고 인덱스 2를 통해 다른 메모드의 SOMEMETHOD 이름을 얻는 것입니다. 색인 0은 getStackTrace이기 때문에 1은 발신자이며, 2는 발신자이기 때문에, 예제 출력은 "Bymethod : Somemethod"라고 불릴 수 있지만, 이행에 의해 지불 될 수 있습니다.

    See all articles