欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js如何將多個(gè)json結(jié)構(gòu)組成的字符串轉(zhuǎn)換為數(shù)組?

 更新時(shí)間:2024年08月24日 16:22:03   作者:一顆不甘墜落的流星  
接口返回的EventStream結(jié)構(gòu)的數(shù)據(jù),由于http流式傳輸時(shí),可能會分段,所以導(dǎo)致本該每次返回一段json數(shù)據(jù)結(jié)構(gòu)的字符串,變成了多個(gè)json數(shù)據(jù)結(jié)構(gòu)的字符串拼接在了一起,本文講述js如何將多個(gè)json結(jié)構(gòu)組成的字符串轉(zhuǎn)換為數(shù)組

接口返回的EventStream結(jié)構(gòu)的數(shù)據(jù),由于http流式傳輸時(shí),可能會分段,所以導(dǎo)致本該每次返回一段json數(shù)據(jù)結(jié)構(gòu)的字符串,變成了多個(gè)json數(shù)據(jù)結(jié)構(gòu)的字符串拼接在了一起。本文講述js如何將多個(gè)json結(jié)構(gòu)組成的字符串轉(zhuǎn)換為數(shù)組。

自定義函數(shù)

例如:

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

想要得到這種的:

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

 函數(shù)實(shí)現(xiàn):支持深層嵌套的json結(jié)構(gòu)

function parseMultiJson(jsonStr) {
  const jsonArr = [];
  let startIndex = 0;
  let endIndex = 0;
  while (startIndex < jsonStr.length) {
    // 找到一個(gè) JSON 對象的開始位置
    startIndex = jsonStr.indexOf('{', startIndex);
    if (startIndex === -1) {
      break;
    }
    // 找到一個(gè) JSON 對象的結(jié)束位置
    let openBrackets = 1;
    endIndex = startIndex + 1;
    while (openBrackets > 0 && endIndex < jsonStr.length) {
      if (jsonStr[endIndex] === '{') {
        openBrackets++;
      } else if (jsonStr[endIndex] === '}') {
        openBrackets--;
      }
      endIndex++;
    }
    // 將該 JSON 對象解析為一個(gè)對象,并添加到數(shù)組中
    const json = jsonStr.substring(startIndex, endIndex);
    jsonArr.push(JSON.parse(json));
    // 更新下一個(gè) 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字符串中數(shù)組中嵌套的還有數(shù)組

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

JS中將object類型轉(zhuǎn)換為json字符串

const obj = {name: "John", age: 30};
const jsonString = JSON.stringify(obj);
console.log(jsonString);  // 輸出:{"name":"John","age":30}

總結(jié)

eval()函數(shù)因?yàn)樾阅芎桶踩珕栴},在大多數(shù)情況下都不推薦使用,使用 JSON.parse() 來替代 eval()解析JSON 數(shù)據(jù)。

到此這篇關(guān)于js如何將多個(gè)json結(jié)構(gòu)組成的字符串轉(zhuǎn)換為數(shù)組?的文章就介紹到這了,更多相關(guān)js轉(zhuǎn)換多json結(jié)構(gòu)為數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論