suchen
HeimJavajavaLernprogrammWie ruft Java die Schnittstelle auf, um JSON-Daten abzurufen und nach dem Parsen in der Datenbank zu speichern?

    Java ruft die Schnittstelle auf, um JSON-Daten abzurufen und in der Datenbank zu speichern

    1. Konfigurieren Sie Ihre eigene definierte Schnittstellen-URL in der YML-Datei

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

    . Fügen Sie die Anforderungsmethode und den Pfad zum Controller hinzu 3. Fügen Sie es zur Service-Methode

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

    hinzu. Implementieren Sie die Methode

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

    in ServiceImpl, um die Schnittstelle aufzurufen, den JSON-String zu analysieren und in der Datenbank zu speichern.

    Holen Sie sich den JSON-String über die API-Schnittstelle Schnittstellendaten über Get (httpGet)-Anforderung, verwenden Sie die HttpClient-Grundanalyse. Sechs Schritte:

    Erstellen Sie eine HttpClient-Instanz.

    • Erstellen Sie eine Instanz einer bestimmten Verbindungsmethode.

    • Rufen Sie die Ausführungsmethode der HttpClient-Instanz auf, um sie auszuführen die Anforderungsmethode

    • Lesen Sie die Antwort

    • Geben Sie die Verbindung frei, unabhängig davon, ob die Ausführungsmethode erfolgreich ist

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

      Wir können den Status der Antwort beurteilen und überprüfen, ob die Daten erhalten wurden. Die Statuswerte der Seitenanforderung sind: 200 Anforderung erfolgreich, 303 Umleitung, 400 Anforderungsfehler, 401 keine Autorisierung, 403 Zugriff verboten, 404 Datei nicht gefunden, 500 Serverfehler.

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

    //创建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();
    Verwenden Sie JSONArray und JSONObject, um JSON-Strings zu analysieren

    Bevor wir den JSON-String analysieren, müssen wir zunächst das Format des JSON-Strings bestimmen. und verwenden Sie verschiedene Analysemethoden für verschiedene Formate. Zum Beispiel: numerischer Wert, Zeichenfolge, Array, Objektarray oder Array-Objekt. Der entscheidende Punkt ist die Verwendung von geschweiften Klammern und eckigen Klammern Achten Sie auf diese beiden Symbole, da diese zu JSON-Parsing-Fehlern führen können JSON-Array, um jedes JSON-Objekt abzurufen und dann die Daten aus dem JSON-Objekt zu lesen.
    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
        String result = EntityUtils.toString(response.getEntity());//解析response
    }//getStatusLine()方法返回保存请求状态的StatusLine对象,getStatusCode()获取状态码

    Speichern Sie die Daten des instanziierten Objekts in der Datenbank.

    Im Springboot-Framework kann Mybatis-Generator Entitätsdateien auf Domänenebene und XML-Dateien generieren , Mapper-Dateien und entsprechende Servicedateien können uns sparen. Beim Schreiben von SQL-Anweisungen können wir die entsprechende Methode direkt in der Serviceschicht aufrufen.

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

    Der vollständige Code lautet wie folgt

    //将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"));
    }

    Das obige ist der detaillierte Inhalt vonWie ruft Java die Schnittstelle auf, um JSON-Daten abzurufen und nach dem Parsen in der Datenbank zu speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme
    Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
    Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Mar 17, 2025 pm 05:46 PM

    In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

    Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Mar 17, 2025 pm 05:45 PM

    In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

    Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Mar 17, 2025 pm 05:44 PM

    In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

    Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Mar 17, 2025 pm 05:43 PM

    In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

    Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Mar 17, 2025 pm 05:35 PM

    Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

    See all articles

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Chat -Befehle und wie man sie benutzt
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    WebStorm-Mac-Version

    WebStorm-Mac-Version

    Nützliche JavaScript-Entwicklungstools

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    EditPlus chinesische Crack-Version

    EditPlus chinesische Crack-Version

    Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    VSCode Windows 64-Bit-Download

    VSCode Windows 64-Bit-Download

    Ein kostenloser und leistungsstarker IDE-Editor von Microsoft