Javascript 在字符串中用graves替换双引号,而不创建新字符串
我有一个json,其中存储了一个带有链接的属性。我想将其写入一个.txt文件,这样我就可以复制内容并在资源对象中使用它,该资源对象有一个我想使用的serverUrl变量。在此之前,我需要稍微更改JSON的字符串值,以便使用模板文本 json对象具有以下格式: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
{
"products": [
{
"image": "http://test.test.com/images/imageName.jpg"
},
{
"image": "http://test.test.com/images/imageName2.jpg"
}
]
}
我试图实现的是将每个产品对象的每个图像值更改为以下格式:
`http://${serverUrl}/images/imagename`
在json创建过程中,我设法使用一个简单的字符串.replace()替换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“(或您选择的任何自定义模板标记)的内容,并在读取时替换它。