解析包含字符串化数组的字符串化JSON

问题描述

我遇到了一些我不完全理解并且无法解决的问题,但是我尝试了。

说我有一个对象:

const jsonExample = {
    textToReplace: 'My text',arrayToReplace: 'My array: ${arrayParam}',};

我需要对这个对象进行字符串化以替换arrayParam

const myArray = ['foo','bar'];
const stringifiedJson = JSON.stringify(jsonExample).replace('${arrayParam}',JSON.stringify(myArray));

然后我需要将其解析回一个对象,并取回我的数组:

const newJson = JSON.parse(stringifiedJson);

但是在字符串化数组的开头出现SyntaxError。有什么我想念的吗?

我知道这是一种相当复杂的处理方式,但是在我真正的问题中,我有一个迭代替换方法,该方法直到现在都只处理字符串,但是我还需要它来替换数组。

谢谢!

编辑:错误是: SyntaxError: Unexpected token f in JSON at position 57

解决方法

使用.replace()时,您要在字符串对象中添加字符串[\"foo\",\"bar\"]

"{\"textToReplace\":\"My text\",\"arrayToReplace\":\"My array: [\"foo\",\"bar\"]\"}"

在解析时,\"My array: [\"上方将被解释为"arrayToReplace"的值。因此,以下f被解释为令牌,而不是字符串值的一部分,从而导致错误。

您可以使用JSON.stringify()的{​​{3}}函数先解析字符串,然后解析整个对象。

请参见以下示例:

const jsonExample = {
    textToReplace: 'My text',arrayToReplace: 'My array: ${arrayParam}',};

const myArray = ['foo','bar'];
const stringifiedJson = JSON.stringify(jsonExample,(key,val) =>{
  return typeof val === "string"
    ? val.replace('${arrayParam}',JSON.stringify(myArray))
    : val;
});

const newJson = JSON.parse(stringifiedJson);
console.log(newJson);

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...