当前位置: 代码网 > it编程>编程语言>Javascript > js如何将多个json结构组成的字符串转换为数组?

js如何将多个json结构组成的字符串转换为数组?

2024年09月06日 Javascript 我要评论
接口返回的eventstream结构的数据,由于http流式传输时,可能会分段,所以导致本该每次返回一段json数据结构的字符串,变成了多个json数据结构的字符串拼接在了一起。本文讲述js如何将多个

接口返回的eventstream结构的数据,由于http流式传输时,可能会分段,所以导致本该每次返回一段json数据结构的字符串,变成了多个json数据结构的字符串拼接在了一起。本文讲述js如何将多个json结构组成的字符串转换为数组。

自定义函数

例如:

'{a: 1}{a: 2}{a: 3}'

想要得到这种的:

[{a: 1}, {a: 2}, {a: 3}]

 函数实现:支持深层嵌套的json结构

function parsemultijson(jsonstr) {
  const jsonarr = [];
  let startindex = 0;
  let endindex = 0;
  while (startindex < jsonstr.length) {
    // 找到一个 json 对象的开始位置
    startindex = jsonstr.indexof('{', startindex);
    if (startindex === -1) {
      break;
    }
    // 找到一个 json 对象的结束位置
    let openbrackets = 1;
    endindex = startindex + 1;
    while (openbrackets > 0 && endindex < jsonstr.length) {
      if (jsonstr[endindex] === '{') {
        openbrackets++;
      } else if (jsonstr[endindex] === '}') {
        openbrackets--;
      }
      endindex++;
    }
    // 将该 json 对象解析为一个对象,并添加到数组中
    const json = jsonstr.substring(startindex, endindex);
    jsonarr.push(json.parse(json));
    // 更新下一个 json 对象的开始位置
    startindex = endindex;
  }
  return jsonarr;
}

使用效果

const arr = parsemultijson('{a: 1}{a: 2}{a: 3}')
console.log(arr)	// [{a: 1}, {a: 2}, {a: 3}]

拓展

json字符串中只有一组

jsonstr = "{'name':'xiaoming','age':'11','lasttime':'2016-07-26','address':'luoyang'}";
jsonarray = eval(jsonstr);

json字符串中有多组

jsonstr2 = "[{'name':'xiaoming','age':'11','lasttime':'2016-07-26','address':'luoyang'},{'name':'xiaoming2','age':'12','lasttime':'2016-07-27','address':'luoyang2'}]";
jsonarray2= eval(jsonstr2);

json字符串中数组中嵌套的还有数组

jsonstr3 = "{'name':'xiaoming','age':'11','lasttime':'2016-07-26','address':{'pro':'henan','city':'luoy'}}";
jsonarray3 = eval('(' + jsonstr3 + ')');

js中将object类型转换为json字符串

const obj = {name: "john", age: 30};
const jsonstring = json.stringify(obj);
console.log(jsonstring);  // 输出:{"name":"john","age":30}

总结

eval()函数因为性能和安全问题,在大多数情况下都不推荐使用,使用 json.parse() 来替代 eval()解析json 数据。

到此这篇关于js如何将多个json结构组成的字符串转换为数组?的文章就介绍到这了,更多相关js转换多json结构为数组内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com