如何使用 React.js 和复杂的 JSON 对象

发布日期:2026-07-15 11:22:04   来源 : 杭州电子商务研究院    浏览量 :4
杭州电子商务研究院 发布日期:2026-07-15 11:22:04  
4

介绍

前端开发人员的关键任务之一是将后端 API 集成到应用程序中。现代 API 广泛遵循RESTful架构,其中端点从客户端接收请求并返回响应,而不管客户端是什么。GET API或端点仅用于使用称为JSON(JavaScript 对象表示法)的流行数据格式从服务器检索数据。它们通常返回具有深度嵌套对象和数组的复杂 JSON 对象。

本指南旨在解释如何从 React 应用程序中的复杂 JSON 对象检索相关信息并将该数据存储在状态中,或在需要时将其作为 props 传递下去。

应用程序概述和设置

本指南中的示例将构建一个小型 React 应用,该应用通过将复杂的 JSON 对象分解为简单的对象和数组来使用端点https://reqres.in/api/unknown。整个数据集由父组件获取和存储,然后分解为两个单独的对象。一个对象作为 props 传递给子组件,子组件向用户显示该对象中包含的信息。

通过运行创建一个空白的反应项目:

      npx create-react-app react-complex-json-app
    

安装 Axios,这是一个与 React 配合使用以进行 HTTP 调用的第三方库。

      npm install axios
    

创建组件样板

创建两个简单的组件开始。首先是Colors组件:

      import React from 'react';

const Colors=()=>{
    return(
        <>
            <h1>This is Colors component</h1>
        </>
    )
}
export default Colors;
    

现在创建Home组件并在其中渲染Colors组件,如下所示。

      import React from 'react';
import Colors from './Colors';

const Home=()=>{
    return(
        <>
            <h1>This is home component</h1>
            <Colors/>
        </>
    )
}

export default Home;
    

最后,在App.js中渲染Home组件。

      import React from 'react';
import './App.css';
import Home from './Components/Home';

function App() {
  return (
    <div className="App">
      <h2>React JSON</h2>
      <Home/>
    </div>
  );
}

export default App;
    

请求复杂的 JSON

考虑以下向 REST API发出GET请求的代码。

      import React,{useEffect,useState} from 'react';
import Colors from './Colors';
import axios from 'axios';

const Home=()=>{
    useEffect(()=>{
        axios.get('https://reqres.in/api/unknown')
            .then(res=>{
                console.log(res)
            })
            .catch(err=>{
                console.log(err);
            })
    },[])
    return(
        <>
            <h1>{Data.Company}</h1>
            <p>{Data.Description}</p>
            <Colors/>
        </>
    )
}

export default Home;
    

分析复杂 JSON 对象

JSON 响应本身包含大量不必要的信息(例如configheaders等),并在数据对象内返回所有相关信息。此数据对象包含用户可能感兴趣的实际数据。分析和分解复杂 JSON 响应的一个好而简单的做法是使用控制台语句查看附加到对象的属性,如下所示。

      useEffect(()=>{
        axios.get('https://reqres.in/api/unknown')
            .then(res=>{
                console.log('Response from main API: ',res)
                console.log('Home Data: ',res.data.ad)          
                console.log('Colors Data: ',res.data.data)
            })
            .catch(err=>{
                console.log(err);
            })
    },[])
    

数据对象包含两个作为属性附加的相关对象:dataad广告对象应该由Home组件使用用于显示公司名称及其座右铭。

      company: "StatusCode Weekly"
text: "A weekly newsletter focusing on software development, infrastructure, the server, performance, and the stack end of things."
url: "http://statuscode.org/"
    

数据对象是一个对象数组,其中每个对象包含有关特定颜色的详细信息

      0: {id: 1, name: "cerulean", year: 2000, color: "#98B2D1", pantone_value: "15-4020"}
1: {id: 2, name: "fuchsia rose", year: 2001, color: "#C74375", pantone_value: "17-2031"}
2: {id: 3, name: "true red", year: 2002, color: "#BF1932", pantone_value: "19-1664"}
3: {id: 4, name: "aqua sky", year: 2003, color: "#7BC4C4", pantone_value: "14-4811"}
4: {id: 5, name: "tigerlily", year: 2004, color: "#E2583E", pantone_value: "17-1456"}
5: {id: 6, name: "blue turquoise", year: 2005, color: "#53B0AE", pantone_value: "15-5217"}
    

使用复杂 JSON 响应中的数据

首先,创建一些状态变量来存储整个数据。状态变量Data存储必须在Home组件上显示的详细信息,colorsData存储必须在Colors组件上显示的详细信息

      const [Data,setData]=useState({
    Company:'',
    Description:''
})
const [colorsData,setColorsData]=useState([])
    

使用 API 调用的.then()方法内的数据填充这些变量。

      useEffect(()=>{
    axios.get('https://reqres.in/api/unknown')
        .then(res=>{

            let companyData=res.data.ad;

            setData({Company:companyData.company,Description:companyData.text})
            setColorsData(res.data.data)
        })
        .catch(err=>{
            console.log(err);
        })
},[])
    

从Home组件内部的companyData输出数据

      return(
    <>
        <h1>{Data.Company}</h1>
        <p>{Data.Description}</p>
        <Colors data={colorsData}/>
    </>
    

最终代码

现在让我们用上面讨论的完整代码来总结本指南。

主页组件

下面演示了Home组件的最终代码。

      import React,{useEffect,useState} from 
以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据