検索
ホームページJava&#&チュートリアルJava はインターフェイスをどのように呼び出して JSON データを取得し、解析後にデータベースに保存しますか?

    Java はインターフェースを呼び出して json データを取得し、データベースに保存します

    1. 独自に定義したインターフェース URL を yml ファイルに構成します

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

    2 .Controller

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

    3 にリクエストメソッドとパスを追加 Service にメソッド

        /**
         * @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(httpGet) リクエストを介してインターフェイス データを取得する HttpClient を使用するには、基本的に 6 つの手順があります。 :

    • HttpClient インスタンスの作成

    • 特定の接続メソッドのインスタンスの作成

    • Callリクエスト メソッドを実行するための HttpClient インスタンスの実行メソッド

    • 応答の読み取り

    • 実行メソッドが成功したかどうかに関係なく、接続を解放します。 or not

    //创建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リクエスト成功、200リクエスト成功、 303 リダイレクト、400 リクエスト エラー、401 不正、403 アクセス禁止、404 ファイルが見つかりません、500 サーバー エラー .

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

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

    JSONArray と JSONObject を使用して json 文字列を解析する

    JSON 文字列を解析する前に、まず次の形式を決定する必要があります。 json 文字列。形式ごとに異なる解析方法を使用する必要があります。一般的な json 文字列形式をいくつか示します

    例: 数値、文字列、配列、オブジェクト配列、または配列オブジェクト。重要な点は、次の使用です。中括弧と角括弧。この 2 つの記号は 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 を使用して解析し、json 配列を走査する必要があります。各 json オブジェクトを取得し、json オブジェクトからデータを読み取ります。

    //将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 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

    この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

    適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

    この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

    カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

    この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

    キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

    この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

    Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

    Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SecLists

    SecLists

    SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    強力な PHP 統合開発環境