我目前正在努力迭代从第三方API获取的JSON对象。您可能会看到,以前没有真正处理过获取API。
这是我正在获取的JSON文件:
链接到JSON文件
为了获取数据,我使用一个useFetch脚本,它看起来像这样:
// useFetch.js
import { useState, useEffect } from "react";
import fetch from 'isomorphic-unfetch';
function useFetch(url) {
const [data, setData] = useState([]);
const [loading, setLoading] = useState(true);
async function fetchUrl() {
const res = await fetch(url);
const json = await res.json();
setData(json);
setLoading(false);
}
useEffect(() => {
fetchUrl();
}, []);
return [data, loading];
}
export { useFetch };
我稍后尝试导出的只是每个角色/冠军的名称(他本身就是一个对象,包括名称、描述等)
// App.js
import { useState, useEffect } from 'react';
import { useFetch } from "../components/useFetch";
const App = () => {
const [data, loading] = useFetch(
"https://ddragon.leagueoflegends.com/cdn/9.3.1/data/en_US/champion.json"
);
useEffect(() => {
console.log(data)
})
return (
<div>
<ul>
{Object.keys(data.data).map((item, i) => (
<li key={i}> // every character has got an ID as well I'd like to pass here later. The output is just a dummy rn.
<p>{data.data}</p>
</li>
))}
</ul>
</div>
)
}
export default App;
不幸的是,我在尝试转换JSON对象数据时遇到了一个错误。data
表示:类型错误:无法将未定义或null转换为指向我在JSX中的迭代的对象。
我尝试的是针对那些空洞的规则,给它们一个字符串,结果是这样的
if ((typeof Object === null) || (typeof Object === undefined)) {
return '-'
}
或
if ((item === null) || (item === undefined)) {
return '-'
}
如前所述
但这显然没有帮助。
我将感谢任何提示/优化与此。
我不太想对钩子做出反应,但您将数据设置为[]
,因此数据。在实际获取数据之前,数据将是未定义的。
如果在useFetch中设置
const[data, setData]=useState({data: [] });
,它会工作吗?
问题内容: 我从网络服务器获取以下JSON字符串。 我想要公开HTML中的JSON,我尝试了以下操作,但未填写字段,我也收到了“无异常”,因此我很难找出其不起作用的原因。 TS 的HTML 问题答案: 您可以使用来从对象获取键(需要IE AFAIK中的polyfill)
我有一个要迭代通过的JSON对象。 我正在使用映射这些值,我认为这是处理对象的正确方法: 但是,当我希望对象返回时,上面的返回以下内容: 为什么它返回的是值,而不是对象?
问题内容: 我在尝试解决JQuery $ .each()迭代时遇到一些真正的困难 这是我的数组,为方便起见,限制了结果 我的第一个$ .each迭代效果很好,但是“ EVENTS”的子迭代是我遇到问题的地方 我的第一个$ .each()函数 我无法使用的第二个$ .each()函数 我在(松散地)理解这不是单个JSON对象,而是对象的JSON数组,但不了解第一个版本是否有效,第二个版本为什么不起作
null 一些示例输出数据: *编辑:工作的scala代码行:
问题内容: 我的问题很简单,我有一个以下JSON Typescript对象,并且我想迭代遍历JSON属性 使用的代码是以下有角TypeScript组件: 我真正需要的是遍历JSON的键值属性,并在我的HTML中显示它们。 非常感谢! 问题答案: 如果您使用的是Angular 6.1,请使用键值管道 对于Angular 5 示例:https://stackblitz.com/edit/keyvalu
问题内容: 如何在jquery中迭代json数据。 问题答案: 您可以这样使用: