Javascript 如何在react JS(axios)中从json中提取一些数据?

Javascript 如何在react JS(axios)中从json中提取一些数据?,javascript,json,reactjs,axios,Javascript,Json,Reactjs,Axios,我是ReactJS和axios的新手 如果键是数字,我想迭代并提取json数据(如0、1、2……) 我不知道怎么写这段代码。 (因为服务器动态提供json,我们不知道它将包含多少元素) 现在我可以提取key=0的数据(假设存在此元素) 类ContentBody扩展组件{ 建造师(道具){ 超级(道具); 此.state={ jdata:[] } } componentDidMount(){ var self=这个; //定期读取数据 setInterval(函数(){ 获取(URL) .然后(功

我是ReactJS和axios的新手

如果键是数字,我想迭代并提取json数据(如0、1、2……) 我不知道怎么写这段代码。 (因为服务器动态提供json,我们不知道它将包含多少元素)

现在我可以提取key=0的数据(假设存在此元素)

类ContentBody扩展组件{
建造师(道具){
超级(道具);
此.state={
jdata:[]
}
}
componentDidMount(){
var self=这个;
//定期读取数据
setInterval(函数(){
获取(URL)
.然后(功能(响应){
自我状态({
jdata:response.data[0]。名称
});
})
.catch(函数(e){
控制台日志(“错误”,e);
})
}, 1000);
}
}
//下面是来自服务器的json数据
{
"0": {
“分配”:错误,
“名称”:“BebopDrone-Test001”,
“无人机ID”:0
}, 
"1": {
“分配”:错误,
“名称”:“BebopDrone-B046836”,
“无人机”:1
}, 
"2": {
“分配”:错误,
“名称”:“BebopDrone-Test002”,
“无人机”:2
}, 
“函数”:“GetAllStatus()”
}
//我的伪代码可能是
对于(int i=0;i
您的响应是一个对象而不是数组

无法使用数组索引访问对象

假设response.data是json的主体,您应该像这样访问对象属性:response.data['0']response.data['1']response.data['2']

可以使用在对象上进行迭代

您的数据模型(除了对“GetAllDreamStatus()”的引用)表明数组可能更有用

{
   "jdata" : [
      {
         "Assigned": false, 
         "Name": "BebopDrone-Test001.", 
         "droneID": 0
      }
    // ... 
    ]
}

然后您可以迭代、减少、过滤等等。

您的响应是一个对象而不是数组

无法使用数组索引访问对象

假设response.data是json的主体,您应该像这样访问对象属性:response.data['0']response.data['1']response.data['2']

可以使用在对象上进行迭代

您的数据模型(除了对“GetAllDreamStatus()”的引用)表明数组可能更有用

{
   "jdata" : [
      {
         "Assigned": false, 
         "Name": "BebopDrone-Test001.", 
         "droneID": 0
      }
    // ... 
    ]
}

然后您可以迭代、减少、过滤等等。

从服务器得到的响应是一个对象,您应该做的是循环对象,然后在我假设您只需要名称的状态下更新数据

componentDidMount() {
    var self = this;
    // read data periodically
    setInterval(function() {
        axios.get(URL)
            .then(function(response) {
                var names=[];
                Object.keys(response.data).forEach(function(data) {
                     names.push(data.Name);
                })
                self.setState({
                    jdata: names
                });
            })
            .catch(function(e) {
                console.log("ERROR ", e);
            })
    }, 1000);
} 

您从服务器得到的响应是一个对象,您应该做的是在对象上循环,然后在我假设您只需要名称的状态下更新数据

componentDidMount() {
    var self = this;
    // read data periodically
    setInterval(function() {
        axios.get(URL)
            .then(function(response) {
                var names=[];
                Object.keys(response.data).forEach(function(data) {
                     names.push(data.Name);
                })
                self.setState({
                    jdata: names
                });
            })
            .catch(function(e) {
                console.log("ERROR ", e);
            })
    }, 1000);
} 

请在循环中放入一些代码,您可以使用for..在对象中进行迭代。请在循环中放入一些代码,您可以使用for..在对象中进行迭代。谢谢我试试看。谢谢。我会试试的。这也是一个很好的方法。谢谢这也是一个很好的方法。谢谢