【问题标题】:How to convert 'string of array objects' to an array in react?如何在反应中将“数组对象字符串”转换为数组?
【发布时间】:2021-12-20 17:57:42
【问题描述】:

我在 StackOverflow 上研究了几个问题,但找不到相关答案。

我有一个像这样的数组字符串

"[{"insert":"Test"},{"insert":"\n","attributes":{"header":1}},{"insert":"Asdasfff"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"Asadsf"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"Sfsfsft"},{"insert":"\n","attributes":{"header":2}},{"insert":"Make"},{"insert":"\n","attributes":{"list":"unchecked"}},{"insert":"Back"},{"insert":"\n","attributes":{"list":"checked"}},{"insert":"Ban"},{"insert":"\n","attributes":{"list":"unchecked"}},{"insert":"Fg"},{"insert":"\n","attributes":{"list":"checked"}}]"

我需要将其转换为如下所示的数组:

我试过JSON.parse(),但没用!

【问题讨论】:

    标签: arrays reactjs json string javascript-objects


    【解决方案1】:

    这是因为您的 JSON 中有 \n。这里解释一下:https://stackoverflow.com/a/5191059/11749096

    function jsonEscape(str)  {
        return str.replace(/\n/g, "\\\\n").replace(/\r/g, "\\\\r").replace(/\t/g, "\\\\t");
    }
    
    var data = `[{"insert":"Test"},{"insert":"\n","attributes": 0}]`;
    var dataObj = JSON.parse(jsonEscape(data));
    console.log(dataObj);
    

    【讨论】:

      【解决方案2】:

      您没有数组字符串,在您的情况下,第一个和最后一个双引号必须是一个引号,因为当您对数组进行字符串化时,它的工作方式如下:

      const goo = [{"insert":"Test"},{"insert":"\n","attributes":{"header":1}}]

      对其进行字符串化:

      JSON.stringify(goo)
      '[{"insert":"Test"},{"insert":"\n","attributes":{"header":1}}]'

      在这种情况下,您的解析工作如下:

      JSON.parse(foo)
      0: {insert: 'Test'}
      1: {insert: '\n', attributes: {…}}
      length: 2
      [[Prototype]]: Array(0)

      【讨论】:

        猜你喜欢
        • 2021-05-12
        • 2022-10-07
        • 2011-12-27
        • 2023-03-28
        • 2010-11-04
        • 2021-05-09
        • 1970-01-01
        相关资源
        最近更新 更多