赞
踩
有时候后端返回的数据中有数组或对象的结构,却仍然以字符串的形式返回给前端;
- let data = {
- records: [
- {
- "id": "1",
- "info": '[{"name":"张三","age":60},{"name":"李四","age":80}]'
- },
- {
- "id": "2",
- "info": '[{"name":"王五","age":90},{"name":"郑六","age":100}]'
- }
- ]
- }
- data.records.forEach(element => {
- for(let i = 0, len = element.info.length; i < len; i++) {
- console.log(element.info[i].name) // undefined
- }
- })
如上面代码中的info属性值就是一个字符串类型,前端拿到后是不能直接使用的,需要用 JSON.parse 转化一下
- data.records.forEach(element => {
- element.info = JSON.parse(element.info)
- for(let i = 0, len = element.info.length; i < len; i++) {
- console.log(element.info[i].name) //张三 李四 王五 郑六
- }
- })
在使用JSON.parse时,处理的参数需要是严格的json格式,key值要使用双引号包括,否则会出错;下面这种写法就会报错
"info": "[{'name':'王五','age':90},{'name':'郑六','age':100}]" // Uncaught SyntaxError: Unexpected token ' in JSON at position 2
如果字符串外层使用双引号,内层也使用双引号,可以使用 \ 转义一下
- let data = {
- records: [
- {
- "id": "1",
- "info": "[{\"name\":\"张三\",\"age\":60},{\"name\":\"李四\",\"age\":80}]"
- },
- {
- "id": "2",
- "info": “[{\"name\":\"王五\",\"age\":90},{\"name\":\"郑六\",\"age\":90}]”
- }
- ]
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。