最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現解析json復雜數據的第三種思路詳解

 更新時間:2024年01月09日 10:01:03   作者:愛碼少年  
這篇文章主要為大家信息介紹了java實現解析json復雜數據的第三種思路,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

一、概述

接上篇 java解析json復雜數據的兩種思路

我們已經通過解析返回json字符串得到數據,現在改變思路, 按照如下流程獲取數據:

二、數據預覽

1. 接口json數據

{
    "code":200,
    "message":"success",
    "traceId":"cec7dfb0-78f4-40c4-b1ce-7463b100e3fd",
    "data":{
        "list":[
            {
                "articleId":135418954,
                "title":"java解析json復雜數據的兩種思路",
                "description":"萌新小明最近新開了CSDN博客,蠢蠢欲動,迫不及待的發(fā)表了幾篇工作中積累下來的解決問題的涂鴉之作,看著訪問量慢慢漲起來,心中暗暗竊喜?,F在小明想每天23點記錄一下每篇文章的訪問量。。。",
                "url":"https://blog.csdn.net/qq_16127313/article/details/135418954",
                "type":1,
                "top":false,
                "forcePlan":false,
                "viewCount":947,
                "commentCount":0,
                "editUrl":"https://editor.csdn.net/md?articleId=135418954",
                "postTime":"2024-01-06 14:11:40",
                "diggCount":16,
                "formatTime":"前天 14:11",
                "picList":[
                    "https://img-blog.csdnimg.cn/direct/a409a0f4555c459fa05c00fd9ee0ea8c.png"
                ],
                "collectCount":21
            },
            {
                "articleId":135244727,
                "title":"java lambda表達式訓練題一",
                "description":"Lambda 表達式,也可稱為閉包,它是推動 Java 8 發(fā)布的最重要新特性。Lambda 允許把函數作為一個方法的參數(函數作為參數傳遞進方法中)。使用 Lambda 表達式可以使代碼變的更加簡潔緊湊。",
                "url":"https://blog.csdn.net/qq_16127313/article/details/135244727",
                "type":1,
                "top":false,
                "forcePlan":false,
                "viewCount":1238,
                "commentCount":0,
                "editUrl":"https://editor.csdn.net/md?articleId=135244727",
                "postTime":"2023-12-27 18:07:30",
                "diggCount":7,
                "formatTime":"2023.12.27",
                "picList":[
                    "https://img-blog.csdnimg.cn/direct/d59c68b950754e879914b5319cd1b53f.png"
                ],
                "collectCount":8
            },
            {
                "articleId":135173565,
                "title":"二維碼初體驗 com.google.zxing 實現續(xù) - web api封裝",
                "description":"在 二維碼初體驗 com.google.zxing 實現 我們實現了二維碼的生成,但是大部分情況下,二維碼的相關功能是作為API接口來提供服務的。我們下面便演示在springboot、Knife4j下封裝api接口來實現二維碼生成功能。如何使用下面的備份文件恢復成原始的項目代碼,請移步查閱:神奇代碼恢復工具-over-",
                "url":"https://blog.csdn.net/qq_16127313/article/details/135173565",
                "type":1,
                "top":false,
                "forcePlan":false,
                "viewCount":1904,
                "commentCount":0,
                "editUrl":"https://editor.csdn.net/md?articleId=135173565",
                "postTime":"2023-12-23 20:17:11",
                "diggCount":23,
                "formatTime":"2023.12.23",
                "picList":[
                    "https://img-blog.csdnimg.cn/direct/f0c994ca789a495a8c8c03d86d626f24.jpeg"
                ],
                "collectCount":23
            },
            {
                "articleId":135167613,
                "title":"二維碼初體驗 com.google.zxing 實現",
                "description":"Java 操作二維碼的開源項目很多,如 SwetakeQRCode、BarCode4j、Zxing 等,這邊以Zxing 為例進行介紹。選擇需要生成QR原始文件,支持 “清除空白行及空格” 以減少二維碼圖片大小。支持輸入文本內容,直接生成二維碼代碼結構QrCodeUI: 完整版本代碼SimpleQrCodeUI:簡化版本代碼如何使用下面的備份文件恢復成原始的項目代碼,請移步查閱:神奇代碼恢復工具-over-",
                "url":"https://blog.csdn.net/qq_16127313/article/details/135167613",
                "type":1,
                "top":false,
                "forcePlan":false,
                "viewCount":1286,
                "commentCount":0,
                "editUrl":"https://editor.csdn.net/md?articleId=135167613",
                "postTime":"2023-12-23 13:52:23",
                "diggCount":6,
                "formatTime":"2023.12.23",
                "picList":[
                    "https://img-blog.csdnimg.cn/direct/d3eeac85857543869dce8967c570bdc4.jpeg"
                ],
                "collectCount":11
            },
            {
                "articleId":135135799,
                "title":"【隨筆】MD5加密字符串、文件apache、springframework實現",
                "description":"【代碼】【隨筆】MD5加密字符串、文件commons-codec、springframework實現。",
                "url":"https://blog.csdn.net/qq_16127313/article/details/135135799",
                "type":1,
                "top":false,
                "forcePlan":false,
                "viewCount":1721,
                "commentCount":0,
                "editUrl":"https://editor.csdn.net/md?articleId=135135799",
                "postTime":"2023-12-21 17:29:54",
                "diggCount":9,
                "formatTime":"2023.12.21",
                "picList":[
                    "https://img-blog.csdnimg.cn/direct/dc26b7f1c731494f80c8c3b3badfa95d.jpeg"
                ],
                "collectCount":9
            }
        ],
        "total":72
    }
}

2. json轉xml數據

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <code>200</code>
  <message>success</message>
  <traceId>cec7dfb0-78f4-40c4-b1ce-7463b100e3fd</traceId>
  <data>
    <list>
      <articleId>135418954</articleId>
      <title>java解析json復雜數據的兩種思路</title>
      <description>萌新小明最近新開了CSDN博客,蠢蠢欲動,迫不及待的發(fā)表了幾篇工作中積累下來的解決問題的涂鴉之作,看著訪問量慢慢漲起來,心中暗暗竊喜?,F在小明想每天23點記錄一下每篇文章的訪問量。。。</description>
      <url>https://blog.csdn.net/qq_16127313/article/details/135418954</url>
      <type>1</type>
      <top>false</top>
      <forcePlan>false</forcePlan>
      <viewCount>947</viewCount>
      <commentCount>0</commentCount>
      <editUrl>https://editor.csdn.net/md?articleId=135418954</editUrl>
      <postTime>2024-01-06 14:11:40</postTime>
      <diggCount>16</diggCount>
      <formatTime>前天 14:11</formatTime>
      <picList>https://img-blog.csdnimg.cn/direct/a409a0f4555c459fa05c00fd9ee0ea8c.png</picList>
      <collectCount>21</collectCount>
    </list>
    <list>
      <articleId>135244727</articleId>
      <title>java lambda表達式訓練題一</title>
      <description>Lambda 表達式,也可稱為閉包,它是推動 Java 8 發(fā)布的最重要新特性。Lambda 允許把函數作為一個方法的參數(函數作為參數傳遞進方法中)。使用 Lambda 表達式可以使代碼變的更加簡潔緊湊。</description>
      <url>https://blog.csdn.net/qq_16127313/article/details/135244727</url>
      <type>1</type>
      <top>false</top>
      <forcePlan>false</forcePlan>
      <viewCount>1238</viewCount>
      <commentCount>0</commentCount>
      <editUrl>https://editor.csdn.net/md?articleId=135244727</editUrl>
      <postTime>2023-12-27 18:07:30</postTime>
      <diggCount>7</diggCount>
      <formatTime>2023.12.27</formatTime>
      <picList>https://img-blog.csdnimg.cn/direct/d59c68b950754e879914b5319cd1b53f.png</picList>
      <collectCount>8</collectCount>
    </list>
    <list>
      <articleId>135173565</articleId>
      <title>二維碼初體驗 com.google.zxing 實現續(xù) - web api封裝</title>
      <description>在 二維碼初體驗 com.google.zxing 實現 我們實現了二維碼的生成,但是大部分情況下,二維碼的相關功能是作為API接口來提供服務的。我們下面便演示在springboot、Knife4j下封裝api接口來實現二維碼生成功能。如何使用下面的備份文件恢復成原始的項目代碼,請移步查閱:神奇代碼恢復工具-over-</description>
      <url>https://blog.csdn.net/qq_16127313/article/details/135173565</url>
      <type>1</type>
      <top>false</top>
      <forcePlan>false</forcePlan>
      <viewCount>1904</viewCount>
      <commentCount>0</commentCount>
      <editUrl>https://editor.csdn.net/md?articleId=135173565</editUrl>
      <postTime>2023-12-23 20:17:11</postTime>
      <diggCount>23</diggCount>
      <formatTime>2023.12.23</formatTime>
      <picList>https://img-blog.csdnimg.cn/direct/f0c994ca789a495a8c8c03d86d626f24.jpeg</picList>
      <collectCount>23</collectCount>
    </list>
    <list>
      <articleId>135167613</articleId>
      <title>二維碼初體驗 com.google.zxing 實現</title>
      <description>Java 操作二維碼的開源項目很多,如 SwetakeQRCode、BarCode4j、Zxing 等,這邊以Zxing 為例進行介紹。選擇需要生成QR原始文件,支持 “清除空白行及空格” 以減少二維碼圖片大小。支持輸入文本內容,直接生成二維碼代碼結構QrCodeUI: 完整版本代碼SimpleQrCodeUI:簡化版本代碼如何使用下面的備份文件恢復成原始的項目代碼,請移步查閱:神奇代碼恢復工具-over-</description>
      <url>https://blog.csdn.net/qq_16127313/article/details/135167613</url>
      <type>1</type>
      <top>false</top>
      <forcePlan>false</forcePlan>
      <viewCount>1286</viewCount>
      <commentCount>0</commentCount>
      <editUrl>https://editor.csdn.net/md?articleId=135167613</editUrl>
      <postTime>2023-12-23 13:52:23</postTime>
      <diggCount>6</diggCount>
      <formatTime>2023.12.23</formatTime>
      <picList>https://img-blog.csdnimg.cn/direct/d3eeac85857543869dce8967c570bdc4.jpeg</picList>
      <collectCount>11</collectCount>
    </list>
    <list>
      <articleId>135135799</articleId>
      <title>【隨筆】MD5加密字符串、文件apache、springframework實現</title>
      <description>【代碼】【隨筆】MD5加密字符串、文件commons-codec、springframework實現。</description>
      <url>https://blog.csdn.net/qq_16127313/article/details/135135799</url>
      <type>1</type>
      <top>false</top>
      <forcePlan>false</forcePlan>
      <viewCount>1721</viewCount>
      <commentCount>0</commentCount>
      <editUrl>https://editor.csdn.net/md?articleId=135135799</editUrl>
      <postTime>2023-12-21 17:29:54</postTime>
      <diggCount>9</diggCount>
      <formatTime>2023.12.21</formatTime>
      <picList>https://img-blog.csdnimg.cn/direct/dc26b7f1c731494f80c8c3b3badfa95d.jpeg</picList>
      <collectCount>9</collectCount>
    </list>
    <total>72</total>
  </data>
</root>

三、代碼實現

1. pom.xml

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webflux</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>io.projectreactor.netty</groupId>
            <artifactId>reactor-netty</artifactId>
            <version>0.9.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.10</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.10.2</version>
        </dependency>
        <dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>2.1.4</version>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.5.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>

2. 核心代碼

package com.fly.xml;

import java.io.IOException;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;

import org.apache.commons.io.IOUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.client.WebClient;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class XmlTest
{
    static JsonMapper jsonMapper = new JsonMapper();
    
    static XmlMapper xmlMapper = new XmlMapper();
    
    static WebClient webClient = WebClient.builder().codecs(configurer -> configurer.defaultCodecs().maxInMemorySize(-1)).build(); 
    
   
    @Test
    public void testApi()
        throws IOException, DocumentException
    {
        //WebClient同步調用
        String url = "https://blog.csdn.net/community/home-api/v1/get-business-list?page=1&size=5&businessType=blog&username=qq_16127313";
        String jsonText = webClient.get().uri(url).acceptCharset(StandardCharsets.UTF_8).accept(MediaType.APPLICATION_JSON).retrieve().bodyToMono(String.class).block();
       
        //json轉xml
        JsonNode jsonNode = jsonMapper.readTree(jsonText);
        String xml = xmlMapper.writeValueAsString(jsonNode);
        
        // dom4j、XPath
        Document doc = new SAXReader().read(new StringReader(xml));
        doc.selectNodes("http://data/list/url").stream().forEach(n -> log.info(n.getStringValue()));
        doc.selectNodes("http://data/list/viewCount").stream().forEach(n -> log.info(n.getStringValue()));
    }
}

3. 運行結果

四、源碼傳送

https://gitee.com/00fly/effict-side/blob/master/springboot-cache/src/test/java/com/fly/test/restful/json/ParseJson.java

以上就是java實現解析json復雜數據的第三種思路詳解的詳細內容,更多關于java解析json復雜數據的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot中的共享Session域詳解

    SpringBoot中的共享Session域詳解

    這篇文章主要介紹了SpringBoot中的共享Session域詳解,使用Redis解決Session共享問題的原理非常簡單,就是把原本存儲在不同服務器上的Session拿出來放在一個獨立的服務器上,需要的朋友可以參考下
    2024-01-01
  • 使用Spring Boot上傳文件功能

    使用Spring Boot上傳文件功能

    上傳文件是互聯(lián)網中常應用的場景之一,最典型的情況就是上傳頭像等,今天就帶著大家做一個Spring Boot上傳文件的小案例,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-01-01
  • 輕松掌握Java享元模式

    輕松掌握Java享元模式

    這篇文章主要幫助大家輕松掌握Java享元模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Spring中存儲Bean的常見注解方式

    Spring中存儲Bean的常見注解方式

    Spring框架中的控制反轉(IoC)和依賴注入(DI)是核心概念,實現了對象的解耦和動態(tài)依賴,IoC容器負責對象的生命周期和對象間的依賴關系,通過DI方式注入依賴,本文介紹Spring中存儲Bean的常見注解方式,感興趣的朋友一起看看吧
    2024-09-09
  • Spring聲明式事務和@Aspect的攔截順序問題的解決

    Spring聲明式事務和@Aspect的攔截順序問題的解決

    本篇文章主要介紹了Spring聲明式事務和@Aspect的攔截順序問題的解決,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 解析Java編程之Synchronized鎖住的對象

    解析Java編程之Synchronized鎖住的對象

    這篇文章主要介紹了解析Java編程之Synchronized鎖住的對象,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • SpringBoot WebSocket多消息推送過程

    SpringBoot WebSocket多消息推送過程

    介紹了如何實現多種消息推送功能,包括給分組、用戶推送消息,處理多設備登錄,監(jiān)控連接心跳,并使用公平鎖支持并發(fā),詳細描述了WebSocket配置類、攔截器、處理器和工具類的實現,并提供了測試地址
    2026-01-01
  • 獲取系統(tǒng)參數System.getProperties()與配置文件參數@Value(“${key}“)

    獲取系統(tǒng)參數System.getProperties()與配置文件參數@Value(“${key}“)

    這篇文章主要介紹了獲取系統(tǒng)參數System.getProperties()與配置文件參數@Value("${key}"),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • java中 Map<String,Object>用法(示例代碼整合)

    java中 Map<String,Object>用法(示例代碼整合)

    Java中Map<String, Object>是參數化接口,用于存儲鍵值對(鍵為String,值為Object),適用于動態(tài)數據存儲、配置信息及JSON處理,需注意類型轉換和空指針異常,下面通過示例代碼給大家介紹java中 Map<String,Object>用法,感興趣的朋友一起看看吧
    2025-07-07
  • RocketMQ生產者調用start發(fā)送消息原理示例

    RocketMQ生產者調用start發(fā)送消息原理示例

    這篇文章主要為大家介紹了RocketMQ生產者調用start發(fā)送消息原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論

清丰县| 汪清县| 绥芬河市| 杨浦区| 莎车县| 洪洞县| 夏津县| 台北县| 蓬安县| 汾西县| 成武县| 西峡县| 左权县| 高碑店市| 丹巴县| 特克斯县| 漳浦县| 霞浦县| 天镇县| 工布江达县| 江孜县| 绥滨县| 通辽市| 兴山县| 南丰县| 康保县| 始兴县| 田阳县| 罗城| 额尔古纳市| 龙岩市| 梁山县| 玛纳斯县| 大埔区| 长春市| 峨眉山市| 望江县| 温宿县| 花莲市| 海盐县| 富川|