


Comment Java appelle-t-il l'interface pour obtenir des données json et les enregistrer dans la base de données après les avoir analysées ?
Java appelle l'interface pour obtenir les données json et les enregistrer dans la base de données
1 Configurez votre propre URL d'interface définie dans le fichier yml
//自己定义的JSON接口URL blacklist_data_url: 接口URL
2 Ajoutez la méthode de requête et le chemin d'accès au contrôleur
/** * @Title: 查询 * @Description: 查询车辆的记录 * @Author: 半度纳 * @Date: 2022/9/27 17:33 */ @GetMapping("/Blacklist") public void selectBlacklist(){ boolean a = imBuBlacklistService.selectBlacklist();//调用业务层方法 }
. 3. Ajoutez-le à la méthode de service
/** * @Title: 查询 * @Description: 查询车辆的记录 * @Author: 半度纳 * @Date: 2022/9/27 17:33 * @return */ public boolean selectBlacklist();//返回值类型没要求
4. Implémentez la méthode
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; } }
dans ServiceImpl pour appeler l'interface, analysez la chaîne Json et stockez-la dans la base de données
Obtenez la chaîne json via l'interface API
Obtenez le interfacer les données via la requête get (httpGet), utiliser l'analyse de base de HttpClient Six étapes :
Créer une instance de HttpClient
Créer une instance d'une certaine méthode de connexion
Appeler la méthode d'exécution de l'instance de HttpClient à exécuter la méthode de requête
Lire la réponse
Libérez la connexion indépendamment du succès de la méthode d'exécution
//创建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();
Nous pouvons juger de l'état de la réponse et vérifier si les données sont obtenues Les valeurs d'état. de la demande de page sont : 200 requête réussie, 303 redirection, 400 erreur de requête, 401 pas d'autorisation, 403 accès interdit, 404 fichier introuvable, 500 erreur de serveur.
(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()获取状态码
Utilisez JSONArray et JSONObject pour analyser les chaînes json
Avant d'analyser la chaîne json, nous devons d'abord déterminer le format de la chaîne json, et utilisez différentes méthodes d'analyse pour différents formats. Voici quelques chaînes json courantes Format
Par exemple : valeur numérique, chaîne, tableau, tableau d'objets ou objet tableau. Le point clé est l'utilisation d'accolades et de crochets. faites attention à ces deux symboles, ce qui peut provoquer des erreurs d'analyse json.
//json数值 { "key" : 520, "key1" : 1314 } //json字符串 { "key" : "我爱你", "key1" : "一生一世" } //json数组 { "key" : [520, 1314], "key1" : [520, 3344] } //json对象数组 { "我" : [ {"key": "我爱你"}, {"key1": "一生一世"} ] } //json数组对象 { "我" : { [520,1314], ["我爱你", "一生一世"] } }
On peut voir que la chaîne json obtenue à partir d'Autohome est au format tableau json, nous devons donc utiliser JSONArray pour analyser, puis parcourir le json pour obtenir chaque objet json, puis lire les données de l'objet 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")); }
Enregistrez les données de l'objet instancié dans la base de données
Dans le framework springboot, mybatis-generator peut générer des fichiers d'entité de couche de domaine, des fichiers XML. , les fichiers du mappeur et les fichiers de service correspondants. L'utilisation de ce plug-in peut nous sauver. Lors de l'écriture d'instructions SQL, nous pouvons appeler directement la méthode correspondante dans la couche de service.
//调用service层的add方法,直接将实例化对象写入数据库 CarBrandService.add(Brand);
Le code complet est le suivant
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); } } }.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tout d'abord, activez la fonction de mise à l'échelle intégrée du navigateur UC, accédez aux paramètres → Paramètres parcourir → Police et composition ou mise à l'échelle de la page, et sélectionnez un rapport préréglé ou un pourcentage personnalisé; Deuxièmement, vous pouvez forcer la taille de l'affichage de la page en ouvrant ou en pinçant des gestes avec deux doigts; Pour les pages Web qui restreignent la mise à l'échelle, vous pouvez demander la version de bureau du site Web pour déverrouiller les restrictions; Les utilisateurs avancés peuvent également modifier les attributs de la fenêtre en exécutant le code JavaScript dans la barre d'adresse pour obtenir un effet de mise à l'échelle forcé plus flexible.

Les systèmes en temps réel nécessitent des réponses déterministes, car l'exactitude dépend du délai de livraison des résultats; Les systèmes durs en temps réel nécessitent des délais stricts, manqués entraînera des catastrophes, tandis que le temps réel doux permet des retards occasionnels; Des facteurs non déterministes tels que la planification, les interruptions, les caches, la gestion de la mémoire, etc. affectent le calendrier; Le plan de construction comprend la sélection des RTO, l'analyse WCET, la gestion des ressources, l'optimisation matérielle et les tests rigoureux.

La réponse consiste à utiliser Thread.currentThread (). GetStackTrace () pour obtenir le nom de la méthode d'appel, et obtenir le nom Somemethod de l'appel un autre Method via l'index 2. Étant donné que l'index 0 est GetStackTrace, 1 est la méthode actuelle, et 2 est l'appelant, l'exemple de production est "appelé paryMethod: Somemethod", qui peut également être mis en œuvre par le jetable, mais que l'attention doit être accordée à la performance, à l'obfrégation.

Edge occupe un CPU élevé en raison de la consommation élevée de ressources basée sur le noyau de chrome, ainsi que des facteurs tels que les pages multi-tabs, l'exécution du plug-in, les scripts de site Web et les mécanismes de rendu; Les solutions comprennent: 1. Fermer des extensions inutiles pour réduire le fardeau en arrière-plan; 2. Activer la fonction "tag de sommeil" pour réduire l'utilisation des ressources de balise inactive; 3. Nettoyez le processus d'arrière-plan et fermez les paramètres liés au rendu GPU; 4. Mettez à jour le navigateur et le système pour assurer la compatibilité et l'optimisation des performances.

La manipulation des exceptions Java attrape des exceptions via les blocs de capture d'essai, les blocs finissent par s'assurer que le nettoyage des ressources, les ressources essai avec les ressources, gèrent automatiquement les ressources, lance des exceptions, les exceptions personnalisées pour gérer les erreurs spécifiques et suit les meilleures pratiques telles que la capture d'exceptions spécifiques, et non les exceptions, et d'éviter les blocs de capture vides, ainsi en train d'obtenir un code robuste et maintenable.

La classe facultative est utilisée pour gérer en toute sécurité les valeurs qui peuvent être nuls, en évitant les exceptions de pointeur nul. 1. Créez une instance en utilisant Facultatif.Ofnullable pour gérer les valeurs nulles. 2. Vérifiez et accédez aux valeurs via une sécurité ISPRESENT ou IFPRESENT pour éviter un appel direct pour provoquer des exceptions. 3. Utilisez Orelse et Orelseget pour fournir des valeurs par défaut, ou utilisez OrelSethrow pour lancer une exception personnalisée. 4. Convertir ou filtrer les valeurs par le biais des opérations de la chaîne de carte et de filtre pour améliorer la lisibilité du code et la robustesse.

Tout d'abord, vous pouvez vérifier l'IP local via des paramètres, des invites de commande ou des centres de partage de réseau, puis vous pouvez obtenir l'IP publique via des sites Web en ligne ou des commandes PowerShell pour saisir pleinement l'identité du réseau de périphériques.

Il y a des émétères dethodinjavareTurnsanewstringwithallocurrences of spécifiedCharActersorseencesRlaced.ithastwoforms: OneForReplacingSingleCharactersandanotherForsubString
