json - 在 React 中解析 JSON
问题描述
我有这个代码:
<div>
<pre>{JSON.stringify(this.state.dat, null, 2) }</pre>
</div>
这是 JSON 对象结果:
{
"labels": [
"Si",
"No"
],
"datasets": [
{
"data": [
10,
6
],
"backgroundColor": [
"#FF6384",
"#36A2EB",
"#FFCE56",
"#F44336",
"#9C27B0",
"#673AB7",
"#3F51B5",
"#2196F3",
"#00BCD4",
"#009688",
"#4CAF50",
"#8BC34A",
"#CDDC39",
"#FFEB3B",
"#FFC107",
"#FF9800",
"#FF5722",
"#795548",
"#9E9E9E",
"#607D8B",
"#FF6384",
"#36A2EB",
"#FFCE56",
"#F44336",
"#9C27B0",
"#673AB7",
"#3F51B5",
"#2196F3",
"#00BCD4",
"#009688",
"#4CAF50",
"#8BC34A",
"#CDDC39",
"#FFEB3B",
"#FFC107",
"#FF9800",
"#FF5722",
"#795548",
"#9E9E9E",
"#607D8B"
],
"hoverBackgroundColor": [
"#FF6384",
"#36A2EB",
"#FFCE56",
"#F44336",
"#9C27B0",
"#673AB7",
"#3F51B5",
"#2196F3",
"#00BCD4",
"#009688",
"#4CAF50",
"#8BC34A",
"#CDDC39",
"#FFEB3B",
"#FFC107",
"#FF9800",
"#FF5722",
"#795548",
"#9E9E9E",
"#607D8B",
"#FF6384",
"#36A2EB",
"#FFCE56",
"#F44336",
"#9C27B0",
"#673AB7",
"#3F51B5",
"#2196F3",
"#00BCD4",
"#009688",
"#4CAF50",
"#8BC34A",
"#CDDC39",
"#FFEB3B",
"#FFC107",
"#FF9800",
"#FF5722",
"#795548",
"#9E9E9E",
"#607D8B"
]
}
]
}
我正在尝试仅打印“标签”和“数据”以具有(在 div 中)类似的东西,你知道:
硅:10 无:6
但即使我尝试使用这样的东西:
<div>
<pre>{JSON.stringify(this.state.dat.labels, null, 2) }</pre>
</div>
并出现错误:
× TypeError:无法读取 null 的属性“标签”
我应该如何解析这个?或者有什么建议可以得到我正在寻找的结果?
更新:
这是我拥有 JSON 对象的函数(无论如何是在 Java 中创建的个人 API):
componentDidMount() {
axios
.get(`${Constants.ROUTE_WEB_SERVICES}${Constants.GET_DATA_GRAPHICS_QUESTION}${this.props.question.id}`)
.then(res => {
this.setState({
dat :res.data
})
});
}
解决方案
当您的组件最初呈现时,它的状态中没有数据,因此会出现错误。您需要启用它以无错误地呈现。
您可以将空数组设置为初始状态的标签或使用可选链接:
<pre>{JSON.stringify(this.state?.dat?.labels, null, 2) }
或者类似的东西
<pre>{this.state.dat && JSON.stringify(this.state.dat.labels, null, 2)}
或较旧的 ECMA 版本。
推荐阅读
- android - 当他不得不写他的名字时,如何检查用户是否没有在edittext中写数字或标点符号
- java - 如何为开源制作自己的 Maven 存储库和依赖项?
- reactjs - Webpack、babel 和 react:从生产构建中删除某些类名
- language-agnostic - 在不实际将地址传递给函数的情况下如何实现“按引用传递”?
- postgresql - 如何在 postgresql 中声明一个变量 INTERVAL?
- jsf - 更改 tabview 上的选项卡并刷新页面时,Bean 丢失了它们的对象值
- python - 如何查询 Haystack 以获得相似的项目
- android - 如何使recyclview单元格的可点击设置为假
- unix - 从数据文件中删除注释。有什么区别?
- react-native - React-native-router-flux 结合 react-native-side-menu 问题