Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从零开始学习React-解析json、渲染数据(六)

从零开始学习React-解析json、渲染数据(六)

作者头像
王小婷
发布于 2025-05-19 06:19:53
发布于 2025-05-19 06:19:53
7000
代码可运行
举报
文章被收录于专栏:编程微刊编程微刊
运行总次数:0
代码可运行
5640239-1a77943d6386c897.png
5640239-1a77943d6386c897.png

在上一节里面,从零开始学习React-axios获取服务器API接口(五)

https://cloud.tencent.com/developer/article/1536339。我们请求的api是一个天气的api,这一节是如何获取数据,进行解析,并且渲染到前端。

步骤

1:打印json数据,查看数据格式

为了方便查看,我把json数据放在了编辑器里面,对这个json进行解析。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "code": 200,
    "msg": "成功!",
    "data": {
        "yesterday": {
            "date": "5日星期二",
            "high": "高温 21℃",
            "fx": "北风",
            "low": "低温 14℃",
            "fl": "\u003c![CDATA[\u003c3级]]\u003e",
            "type": "晴"
        },
        "city": "上海",
        "aqi": null,
        "forecast": [
            {
                "date": "6日星期三",
                "high": "高温 20℃",
                "fengli": "\u003c![CDATA[\u003c3级]]\u003e",
                "low": "低温 16℃",
                "fengxiang": "东北风",
                "type": "多云"
            },
            {
                "date": "7日星期四",
                "high": "高温 19℃",
                "fengli": "\u003c![CDATA[3-4级]]\u003e",
                "low": "低温 14℃",
                "fengxiang": "东北风",
                "type": "多云"
            },
            {
                "date": "8日星期五",
                "high": "高温 19℃",
                "fengli": "\u003c![CDATA[3-4级]]\u003e",
                "low": "低温 12℃",
                "fengxiang": "北风",
                "type": "多云"
            },
            {
                "date": "9日星期六",
                "high": "高温 19℃",
                "fengli": "\u003c![CDATA[\u003c3级]]\u003e",
                "low": "低温 13℃",
                "fengxiang": "东北风",
                "type": "晴"
            },
            {
                "date": "10日星期天",
                "high": "高温 22℃",
                "fengli": "\u003c![CDATA[3-4级]]\u003e",
                "low": "低温 13℃",
                "fengxiang": "西风",
                "type": "多云"
            }
        ],
        "ganmao": "天气较凉,较易发生感冒,请适当增加衣服。体质较弱的朋友尤其应该注意防护。",
        "wendu": "19"
    }
}

现在我们的目的是要取到"forecast"这个数组里面的所有日期date,并且循环遍历,渲染在页面。

上一节已经成功请求,在打印的时候,(这里我分别打印一下responseresponse.data.data.yesterdayresponse.data.data.forecast,对比一下)先查看一下json的格式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
console.log(response);
5640239-2a3170cc5e2ebe90.png
5640239-2a3170cc5e2ebe90.png
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 console.log(response.data.data.yesterday);
5640239-7b3fcbb024a22d99.png
5640239-7b3fcbb024a22d99.png
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
console.log(response.data.data.forecast);
5640239-75744e1c8c0fb69d.png
5640239-75744e1c8c0fb69d.png
2:空数组接收数据

this.state里面写一个list:[]空数接收数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list:[]
3:赋值

数据接收成功之后,也能在控制台打印了,这个时候需要对数据进行处理赋值,把打印的数据赋值给list

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//用到this需要注意指向,箭头函数
    this.setState({
    list:response.data.data.forecast
    })

因为会用到this需要注意指向,所以把axios成功接收数据的函数改成箭头函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.then((response) =>{
    console.log(response);
    console.log(response.data.data.forecast);
    //用到this需要注意指向,箭头函数
    this.setState({
    list:response.data.data.forecast
    })
  })
4:渲染在视图层

用map方法对数组进行循环,并且在标签里面进行渲染。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul>
    {/* 对数组进行循环 */}
    {
        this.state.list.map((value,key)=>{
          return<li  key={key}>{value.date}</li>
        })
    }
</ul>

效果:点击按钮请求的时候,会将接口数据里面的内容渲染在界面。

5640239-4f80c31dd8b031e5.png
5640239-4f80c31dd8b031e5.png

参考代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React  from 'react';
import axios from 'axios'
class Axios extends React.Component {
    //构造函数
    constructor() {
        super();
        //react定义数据
        this.state = {
        list:[]
        }
    }
    //请求接口的方法
    getData=()=>{
    var  api='https://www.apiopen.top/weatherApi?city=%E4%B8%8A%E6%B5%B7';
   
   axios.get(api)
  .then((response) =>{
    //console.log(response);
    console.log(response.data.data.yesterday);
    //用到this需要注意指向,箭头函数
    this.setState({
    list:response.data.data.forecast
    })
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  });
    }
    render() {
        return (
        <div> 
        <h2>axios获取数据</h2>
        <button onClick={this.getData}>获取api接口</button>
<ul>
    {/* 对数组进行循环 */}
    {
        this.state.list.map((value,key)=>{
          return<li  key={key}>{value.date}</li>
        })
    }
</ul>
        </div>
        )
    }
}
export default Axios;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【v1版本】天气接口 返回JSON数据
免费的天气接口 v1版本 请求模式:GET/POST 请求地址:https://api.shunnet.top/weather/api?edition=v1&city=泸溪 【参数说明】 名称 解释
Shunnet
2021/06/11
6250
天气API
网上找了很多的接口很多都是没有pm2.5这个指数。偶然发现了一个带pm指数的接口。拿来试了一下,还不错,在此跟大家分享一下。
一觉睡到小时候
2019/07/03
7.1K0
天气API
城市天气查询API源码
返回值演示: { "data": { "yesterday": { "date": "6日星期三", "high": "高温 16℃", "fx": "北风", "low": "低温 0℃", "fl": "<![CDATA[<3级]]>", "type": "晴" }, "city": "徐州", "forecast": [ { "date": "7日星期四",
骤雨重山
2022/01/17
1.8K0
基于地图API获取天气预报并展示
​本文主要介绍的是如何利用天气预报的api,在前台显示天气预报,有时候在开发某系统时,可能需要查看未来几天的天气情况,不用利用爬虫技术,也可以轻松的获取到未来几天的天气情况,通过气象局的接口http://wthrcdn.etouch.cn/weather_mini?citykey=101280101(citykey是指城市代码,我这里用的是广州),由于接口返回响应的数据是json字符串(注意看到响应的数据,不要马上以为是json对象,后面demo会介绍到),所以我们可以就能对获取到的天气预报的信息进行处理,填入表格或者其他组件的位置。
小明爱吃火锅
2024/04/29
2830
Jsonpath语法
表示获取的是data下forecast数组中所有的type字段值。获取值为:[“多云”,“中到大雨”,“多云”,“小雨”,“多云”]
全栈程序员站长
2022/11/17
1.2K0
Pytest学习笔记7——接口自动化测试框架实战附源码(开荒篇)
  前面介绍了pytest框架一些基础知识与基本用法,掌握了一定基础后,我们可以进行项目实战,搭建pytest接口自动测试框架。
全栈测试开发日记
2023/02/02
1.7K1
Pytest学习笔记7——接口自动化测试框架实战附源码(开荒篇)
天冷了,写一个天气查询应用(可视化界面),提醒 TA 注意保暖!
1)是通过爬虫的方式获取天气预报网站的HTML页面,然后使用xpath或者bs4解析HTML界面的内容。
小小詹同学
2019/11/13
6620
大牛教大家如何用SpringBoot技术快速实现天气预报系统
通过这个系统,一方面可以了解Spring Boot的全面用法,为后续创建微服务应用打下基础;另一方面,该系统会作为本节进行微服务架构改造的非常好的起点。
愿天堂没有BUG
2022/10/28
8000
大牛教大家如何用SpringBoot技术快速实现天气预报系统
Python每日一谈|No.22.实例.3-Life.1-每日一句名人名言+天气预报
简介:绘文字(日语:絵文字/えもじemoji)是日本在无线通信中所使用的视觉情感符号,绘指图画,文字指的则是字符,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。在NTTDoCoMo的i-mode系统电话系统中,绘文字的尺寸是12x12像素,在传送时,一个图形有2个字节。Unicode编码为E63E到E757,而在Shift-JIS编码则是从F89F到F9FC。基本的绘文字共有176个符号,在C-HTML4.0的编程语言中,则另增添了76个情感符号。最早由栗田穰崇(Shigetaka Kurita)创作,并在日本网络及手机用户中流行。自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。
DrugScience
2021/03/22
7820
Python每日一谈|No.22.实例.3-Life.1-每日一句名人名言+天气预报
在冰天雪地里给我们的“查天气”加上GUI界面
最近天气越累越冷,不少地区都下了雪。身在长江流域,既没有像南方一样温暖,又不像北方有集中供暖,取暖也就只能靠“抖”了。
Crossin先生
2020/01/20
7010
在冰天雪地里给我们的“查天气”加上GUI界面
天气免费API接口,天气API接口请求讲解及源码下载
文章来源:https://www.sojson.com/blog/349.html
全是为了他
2019/12/16
6K0
天气免费API接口,天气API接口请求讲解及源码下载
python接口测试之序列化与反序列化(四)
在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象。在python的标准库中,专门提供了json库与pickle库来处理这部分。
无涯WuYa
2018/10/25
9250
10年老架构师,带你如何使用Redis提升应用的并发访问能力
有时,为了提升整个网站的性能,程序员会将经常需要访问的数据缓存起来,这样,在下次查缓存的使用与系统的时效性有着非常大的关系。当所使用的系统时效性要求不高时,选择使用本节将演示如何通过集成Redis服务器来进行数据的缓存,以提高微服务的并发访问能力。
愿天堂没有BUG
2022/10/28
3090
10年老架构师,带你如何使用Redis提升应用的并发访问能力
PyQt 5实战之城市天气预报
使用python获取天气数据有很多种方法,其中一种是通过爬虫方式,获取天气网站的HTML页面,然后使用BeautifulSoup等解析内容,还有就是通过天气预报网站提供的API接口,直接获取结构化的数据,省去了解析HTML的工作。所以本利采用第二种方法,使用中国天气网站提供的API。 中国天气官网:中国天气
程序员小涛
2020/12/03
1.4K0
PyQt 5实战之城市天气预报
springcloud微服务实践:天气数据API微服务的实现
天气数据API微服务包含了天气数据查询组件。天气数据查询组件提供了天气数据查询的接口。
愿天堂没有BUG
2022/10/28
3750
springcloud微服务实践:天气数据API微服务的实现
python接口自动化(二十四)--unittest断言——中(详解)
  上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言。这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京的天气,一个是查询
北京-宏哥
2019/09/11
1.4K0
python接口自动化(二十四)--unittest断言——中(详解)
动手开发一个名为“微天气”的微信小程序(上)
在一套软件系统中,微信小程序通常是作为前端来使用的,一般还需要有后端的系统提供支持,这就需要开发者(或运营者)购买云服务器(或有自己的独立主机),将后端系统部署其上。对于很多初学者来说,这些条件不容易达到。但我们可以选择使用在线免费API接口,开发者只需要编写好前端系统(微信小程序),在前端系统中直接调用这些免费API即可获得相应的数据。
博文视点Broadview
2020/06/11
8000
Go 读取命令参数的几种方式
微信截图_20171129195400.png 一名初学者,想要尽快熟悉 Go 语言特性,所以以操作式的学习方法为主,比如编写一个简单的数学计算器,读取命令行参数,进行数学运算。 本文讲述使用三种方式讲述 Go 语言如何接受命令行参数,并完成一个简单的数学计算,为演示方便,最后的命令行结果大概是这样的: # input ./calc add 1 2 # output 3 # input ./calc sub 1 2 # out -1 # input ./calc mul 10 20 # out 20
谢伟
2018/06/06
1.5K0
Python数据分析之Pandas(五)
: | ---: | ---: | ---: | ---: | ---: | | 0 | S001 | 怠涵 | 女 | 23 | 山东 | | 1 | S002 | 婉清 | 女 | 25 | 河南 | | 2 | S003 | 溪榕 | 女 | 23 | 湖北 | | 3 | S004 | 漠涓 | 女 | 19 | 陕西 | | 4 | S005 | 祈博 | 女 | 24 | 山东 |
yuanshuai
2022/08/22
1.2K0
Python数据分析之Pandas(五)
移动开发(七):.NET MAUI使用RESTAPI实现查询天气笔记
在移动开发过程中,第三方对接是非常常见的。今天给大家分享.NET MAUI如何使用REST API实现输入城市名称查询天气的示例,希望对大家学习.NET MAUI可以提供一些帮助!
小明互联网技术分享社区
2024/09/24
3690
移动开发(七):.NET MAUI使用RESTAPI实现查询天气笔记
推荐阅读
相关推荐
【v1版本】天气接口 返回JSON数据
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验