ReactJS:Rest API JSON 响应:如何解析

Posted

技术标签:

【中文标题】ReactJS:Rest API JSON 响应:如何解析【英文标题】:ReactJS : RestAPI JSON response : How to Parse 【发布时间】:2019-02-27 02:18:18 【问题描述】:

作为一个 ReactJS 新手,我尝试解析 RestfulAPI JSON 响应,但是,我无法检索所有元素。在尝试访问 text.subjects.code 和 text.subjects.description 时,它返回 null。但是,我可以成功访问 text.id 和 text.name。

JSON 响应如下。

[
  
    "id":95822,
    "name":"Alex",
    "subjects":[
      
        "code": "101",
        "description": "Course 101"
      
    ]
  
]

请多多指教。

【问题讨论】:

你注意到subjects 是一个数组,你应该通过索引来访问它的属性吗? Access / process (nested) objects, arrays or JSON的可能重复 现在您知道主题是一个数组。当主题数组为空并且您尝试从中获取代码时,避免错误情况的最佳方法是使用 map() 或 lodash-get: let code=lodash.get(text.subjects,'[0][code ]',undefined) 然后检查值 if(typeof code != 'undefined') dosomething. 【参考方案1】:

如果您检查主题是一个数组并且您没有从中获得价值,请尝试 text.subjects[0].code

【讨论】:

【参考方案2】:

因为主题是一个数组,你应该像下面这样map主题:

text.subjects.map((subject) => 
    console.log(subject.code, subject.description);
)

或直接获取您想要的索引,如下所示:

text.subjects[0].code

【讨论】:

当您更改数组时不要使用map。你应该改用forEach【参考方案3】:

您可以通过多种方式进行迭代,而我总是喜欢使用 .forEach 和 .map 的几种方式

如果您需要新数组,请使用 .map。因为map返回一个新数组

  const dataArray = text.subjects.map(subject => 
      let obj = ;
      obj.code = subject.code;
      obj.description = subject.description;
      return obj;
 );

//dataArray 将包含所有对象

还有一种不同的地图制作方式

   const dataArray = text.subjects.map(subject => (
       let obj = ;
      obj.code = subject.code;
      obj.description = subject.description;
      return obj;
  );

或者,如果您只想迭代数据,请使用 .forEach。 forEach 不返回数组

   let array = [];
   text.subjects.forEach(subject => (
      let obj = ;
      obj.code = subject.code;
      obj.description = subject.description;
      array.push(obj);
  ));

【讨论】:

以上是关于ReactJS:Rest API JSON 响应:如何解析的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS 应用程序无法使用 REST API 调用获取数据

从 REST API 中提取 JSON 响应

在 REST API 中取消转义 json 响应

Rest Template 无法正确解析 json rest api 响应

为每个 REST API 响应美化或返回漂亮的 JSON 响应

在C#中解析Json rest api响应[重复]