亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

自定義函數(shù)

例如:

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

想要得到這種的:

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

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

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 對象的結(jié)束位置
    let openBrackets = 1;
    endIndex = startIndex + 1;
    while (openBrackets > 0 && endIndex < jsonStr.length) {
      if (jsonStr[endIndex] === '{') {
        openBrackets++;
      } else if (jsonStr[endIndex] === '}') {
        openBrackets--;
      }
      endIndex++;
    }
    // 將該 JSON 對象解析為一個對象,并添加到數(shù)組中
    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字符串中數(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ù)因為性能和安全問題,在大多數(shù)情況下都不推薦使用,使用 JSON.parse() 來替代 eval()解析JSON 數(shù)據(jù)。

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

相關(guān)文章

  • JavaScript的原型存在的安全問題及解決辦法

    JavaScript的原型存在的安全問題及解決辦法

    JavaScript的原型很多人都知道也很好用,但是很多人在使用原型繼承中導(dǎo)致的安全問題卻很少人知道,接下來我們就來好好了解一下,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • js防止頁面被iframe調(diào)用的方法

    js防止頁面被iframe調(diào)用的方法

    這篇文章主要介紹了js防止頁面被iframe調(diào)用的方法,可防止頁面被別的網(wǎng)站iframe調(diào)用,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • JavaScript HTML DOM 元素 (節(jié)點)新增,編輯,刪除操作實例分析

    JavaScript HTML DOM 元素 (節(jié)點)新增,編輯,刪除操作實例分析

    這篇文章主要介紹了JavaScript HTML DOM 元素 (節(jié)點)新增,編輯,刪除操作,結(jié)合實例形式分析了JavaScript針對HTML DOM 元素 (節(jié)點)的新增,編輯,刪除相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2020-03-03
  • js向上無縫滾動,網(wǎng)站公告效果 具體代碼

    js向上無縫滾動,網(wǎng)站公告效果 具體代碼

    這篇文章主要介紹了js向上無縫滾動,網(wǎng)站公告效果,有需要的朋友可以參考一下
    2013-11-11
  • javascript中延遲加載的7種方法實現(xiàn)

    javascript中延遲加載的7種方法實現(xiàn)

    在web前端開發(fā)中,性能優(yōu)化一直是一個非常重要的話題,JavaScript中延遲加載的方式有很多種,本文就來介紹了javascript中延遲加載的7種方法實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-01-01
  • 基于Nuxt.js項目的服務(wù)端性能優(yōu)化與錯誤檢測(容錯處理)

    基于Nuxt.js項目的服務(wù)端性能優(yōu)化與錯誤檢測(容錯處理)

    這篇文章主要介紹了基于Nuxt.js項目的服務(wù)端性能優(yōu)化與錯誤檢測(容錯處理),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • JS實現(xiàn)控制文本框的內(nèi)容

    JS實現(xiàn)控制文本框的內(nèi)容

    下面小編就為大家?guī)硪黄狫S實現(xiàn)控制文本框的內(nèi)容。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • javascript將16進(jìn)制的字符串轉(zhuǎn)換為10進(jìn)制整數(shù)hex

    javascript將16進(jìn)制的字符串轉(zhuǎn)換為10進(jìn)制整數(shù)hex

    這篇文章主要介紹了javascript將16進(jìn)制的字符串轉(zhuǎn)換為10進(jìn)制整數(shù)hex,需要的朋友可以參考下
    2020-03-03
  • 手機端轉(zhuǎn)盤抽獎代碼分享

    手機端轉(zhuǎn)盤抽獎代碼分享

    轉(zhuǎn)盤,也有一種說法叫抽獎轉(zhuǎn)盤,大體上是由一塊圓形的面板上面有很多的獎項設(shè)置,在圓形面板的前面,還有一根指針是固定的,下面,小編給大家分享手機端轉(zhuǎn)盤抽獎,需要的朋友可以參考下
    2015-09-09
  • 微信小程序滾動、輪播圖和文本實例詳解

    微信小程序滾動、輪播圖和文本實例詳解

    輪播圖是我們?nèi)粘i_發(fā)中經(jīng)常會遇到的一個需求,下面這篇文章主要給大家介紹了關(guān)于微信小程序滾動、輪播圖和文本的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08

最新評論