Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取字符串中对象内部的内容_Javascript - Fatal编程技术网

Javascript 获取字符串中对象内部的内容

Javascript 获取字符串中对象内部的内容,javascript,Javascript,我有这个字符串: const test = ` { "name": "Error", } { "name": "Signup Success", "status": "400", "body": { "name": { "first": "test", }, "roles": [ "user" ], "isMale": true, } } ` 如何分别获取两个对象内部的内容。与此类似,

我有这个字符串:

const test = `
{
  "name": "Error",
}

{
  "name": "Signup Success",
  "status": "400",
  "body": {
     "name": {
        "first": "test",
      },
      "roles": [
       "user"
      ],
      "isMale": true,
  }
}
`
如何分别获取两个对象内部的内容。与此类似,第一个对象包含name:Error,第二个对象包含:

  "name": "Signup Success",
  "status": "400",
  "body": {
     "name": {
        "first": "test",
      },
      "roles": [
       "user"
      ],
      "isMale": true,
  }

如果只是您发布的格式,您可以使用分隔符\n\n将其拆分:

let objects = test.split("\n\n")
如果生成的代码在示例中是有效的JSON,则它无效,您可以解析它:

let parsed = objects.map(JSON.parse)
有效的JSON应该是:

const test = `
{
    "name": "Error"
}

{
    "name": "Signup Success",
    "status": "400",
    "body": {
        "name": {
            "first": "test"
        },
        "roles": [
            "user"
        ],
        "isMale": true
    }
}
`

如果只是您发布的格式,您可以使用分隔符\n\n将其拆分:

let objects = test.split("\n\n")
如果生成的代码在示例中是有效的JSON,则它无效,您可以解析它:

let parsed = objects.map(JSON.parse)
有效的JSON应该是:

const test = `
{
    "name": "Error"
}

{
    "name": "Signup Success",
    "status": "400",
    "body": {
        "name": {
            "first": "test"
        },
        "roles": [
            "user"
        ],
        "isMale": true
    }
}
`

使用Stringreplace来摆脱拖尾,比如:name:{first:test,}after-test

.replace/,\n*\s*}/g,$2

然后通过定位}和{之间的空间来使用Stringsplit注意,Regex lookbehind还没有在任何地方实现


.split/?使用Stringreplace除去尾随,例如:name:{first:test,}测试后

.replace/,\n*\s*}/g,$2

然后通过定位}和{之间的空间来使用Stringsplit注意,Regex lookbehind还没有在任何地方实现


.split/?您可以构建解析器:

常数测试=` { 名称:错误, } { 名称:注册成功, 现状:400, 正文:{ 姓名:{ 第一,测试,, }, 角色:[ 使用者 ], 伊斯梅尔:是的, } } `; const addCommas=str=>{ const charactersArray=Array.fromstr.replace/\s/g; charactersArray.reduceac,curr,index,self=>{ 如果curr=='{'acc++; 如果curr=='}'acc-; 如果acc===0&&curr=='}'自[索引]='}'; 返回acc; }, 0; 返回字符ray.join.replace/,\}/g,'''}'.replace/,$/; }; const parsedObject=JSON.parse'['+addCommastest+']'; parsedObject.forEachel,i=>{ console.log`Element${i+1}名称:${el.name}`;
}; 您可以构建解析器:

常数测试=` { 名称:错误, } { 名称:注册成功, 现状:400, 正文:{ 姓名:{ 第一,测试,, }, 角色:[ 使用者 ], 伊斯梅尔:是的, } } `; const addCommas=str=>{ const charactersArray=Array.fromstr.replace/\s/g; charactersArray.reduceac,curr,index,self=>{ 如果curr=='{'acc++; 如果curr=='}'acc-; 如果acc===0&&curr=='}'自[索引]='}'; 返回acc; }, 0; 返回字符ray.join.replace/,\}/g,'''}'.replace/,$/; }; const parsedObject=JSON.parse'['+addCommastest+']'; parsedObject.forEachel,i=>{ console.log`Element${i+1}名称:${el.name}`;
};您必须自己解析它。JSON.parse仅适用于JSON,但该字符串不是JSON。该字符串来自何处?要解码JSON,您不能有剩余的逗号,如在isMale:true中,我从文件中检索它,内容是以文档格式编写的。很难说在一个对象字符串和另一个对象字符串之间没有分隔符。您可以构建一个解析器,但它不容易拆分\r\n\r\n?您必须自己解析它。JSON.parse仅适用于JSON,但该字符串不是JSON。该字符串来自何处?要解码JSON,您不能有剩余的逗号,如在isMale:true中,我从文件中检索它,内容是以文档格式编写的。很难说在一个对象字符串和另一个对象字符串之间没有分隔符。您可以构建一个解析器,但它不是easysplit\r\n\r\n?这是100%安全的-远远不是。它完全中断或更改不同字符串的内容,例如{name:}{}或{name:\}{}。这是100%安全的-远远不是。它完全中断或更改不同字符串的内容,例如{name:}{}或{name:\}{}。