Javascript 在字符串中用graves替换双引号,而不创建新字符串

Javascript 在字符串中用graves替换双引号,而不创建新字符串,javascript,json,regex,Javascript,Json,Regex,我有一个json,其中存储了一个带有链接的属性。我想将其写入一个.txt文件,这样我就可以复制内容并在资源对象中使用它,该资源对象有一个我想使用的serverUrl变量。在此之前,我需要稍微更改JSON的字符串值,以便使用模板文本 json对象具有以下格式: { "products": [ { "image": "http://test.test.com/images/imageName.jpg" }, { "image": "http://t

我有一个json,其中存储了一个带有链接的属性。我想将其写入一个.txt文件,这样我就可以复制内容并在资源对象中使用它,该资源对象有一个我想使用的serverUrl变量。在此之前,我需要稍微更改JSON的字符串值,以便使用模板文本

json对象具有以下格式:

{
  "products": [
    {
      "image": "http://test.test.com/images/imageName.jpg"
    },
    {
      "image": "http://test.test.com/images/imageName2.jpg"
    }
  ]
}
我试图实现的是将每个产品对象的每个图像值更改为以下格式:

`http://${serverUrl}/images/imagename`

在json创建过程中,我设法使用一个简单的字符串.replace()替换url,但我正在努力完成以下步骤:

  • 将双引号改为graves(“=>”),并保留url
  • 全局执行,我不想提取值,对象应该被覆盖
  • 我尝试过编写一些正则表达式,但我似乎不知道如何替换双引号并将url保存在一个正则表达式中。 这样做对吗?还是我应该尝试完全不同的东西

    编辑

    到目前为止我的代码

    let dataImport = [];
    
    // Code to convert excel to JSON
    // Contains the following line for the image property
    case "image": 
      value = value.replace("https://test.test.com", "${serverUrl}");
      rowData["image"] = value;
    break;
    
    // Convert object
    let json = JSON.stringify(dataImport, null, 2);
    fs.writeFileSync("data.txt", json);
    
    var json=json.stringify({
    “产品”:[
    {
    “图像”:http://test.test.com/images/imageName.jpg"
    },
    {
    “图像”:http://test.test.com/images/imageName2.jpg"
    }
    ]
    },空,,);
    var domain=“test.test.com”;
    log(convertJsonUrls(json,domain));
    /**
    *将包含指定域URL的任何字符串转换为模板字符串,
    *并将域替换为“${serverUrl}”
    */
    函数convertJsonUrls(json,域){
    变量stringRE=/“(((?:\\.\.[^\\\”])*)”/g;
    var urlRE=new RegExp(“^(https?:/)”+escapeRegExp(domain)+“(/.*)$”;
    var template=json.replace(stringRE,函数(原始,内容){
    var urlMatch=urlRE.exec(内容);
    如果(!urlMatch)返回原始;//没有更改,请保留双引号
    返回“`+urlMatch[1]+“${serverUrl}”+urlMatch[2]+“`”;
    });
    返回模板;
    }
    /**
    *转义任何RegExp特殊字符。
    *抄袭https://stackoverflow.com/a/6969486/22364
    */
    函数escapeRegExp(字符串){
    返回字符串。replace(/[.*+?^${}()\[\]\\]/g,\\$&');/$&表示整个匹配字符串
    
    }
    在JSON中使用反勾号会使JSON无效。您有JSON或对象吗?JSON是一种文本格式,用于序列化对象,看起来类似于JavaScript中的对象文字,但是反勾号在其中不是有效语法。对象是纯JS文字,允许任何JS语法,包括反勾号。因此,模板als在遇到时进行计算,您不能“存储”类似于
    `Hello${name}`
    的内容,然后再执行计算。例如,您可以将其放在接受
    name
    的函数中,从而在调用表达式时对其进行计算。在调用JSON.stringify()之后,我尝试对字符串值进行替换在我的对象上。这会绕过这个问题吗?我不想实际使用JSON,我只想将替换的结果写入.txt文件。“我不想实际使用JSON,我只想将替换的结果写入.txt文件。”。“我想你会在某个时候以某种方式读取数据。你打算怎么做?你可以在完成
    JSON.stringify
    之后更改你得到的内容,然后将数据写入文件。然而,之后当您读取文件时,您将需要一个自定义解析器,因为您不再拥有JSON。您可能有一些类似于JSON的东西,但在读取它时会导致所有JSON解析器出错。如果您真的需要,最好在序列化/反序列化时使用基本字符串替换。因此,您可以将任何URL转换为类似于http://${serverUrl}/images/imagename“(或您选择的任何自定义模板标记)的内容,并在读取时替换它。