Javascript 有没有办法根据条件动态替换整个对象中的双引号
我有一个像下面这样的对象,现在我需要删除双引号,如果其中任何一个值是Number或null。除这三种情况外,还应提供双引号 所有这些值都是从textbox获取的,如果我提供的值是1234,那么它将被添加为“1234” 所以,在这里,我面临着这个问题。如何避免这种情况?请告知Javascript 有没有办法根据条件动态替换整个对象中的双引号,javascript,json,Javascript,Json,我有一个像下面这样的对象,现在我需要删除双引号,如果其中任何一个值是Number或null。除这三种情况外,还应提供双引号 所有这些值都是从textbox获取的,如果我提供的值是1234,那么它将被添加为“1234” 所以,在这里,我面临着这个问题。如何避免这种情况?请告知 { "fruits":[{ "name":"apple", "count":"4", "filter":{ "unique":[{ "attri
{
"fruits":[{
"name":"apple",
"count":"4",
"filter":{
"unique":[{
"attribute":"isFruit",
"identifier":"9876"
}],
"match_attributes":{
"location":"NewZeland",
"subname":"null"
},
"match_expressions":[{
"attribute":"value1",
"operator":"In",
"values":["test_value","4567","value7"]
},
{
"attribute_name":"isvegetable",
"operator":"In",
"values":["15678"]
}]
}
}]
}
我的预期输出应该如下所示
{
"fruits":[{
"name":"apple",
"count":4,
"filter":{
"unique":[{
"attribute":"isFruit",
"identifier": 9876
}],
"match_attributes":{
"location":"NewZeland",
"subname":null
},
"match_expressions":[{
"attribute":"value1",
"operator":"In",
"values":["test_value",4567,"value7"]
},
{
"attribute_name":"isvegetable",
"operator":"In",
"values":[15678]
}]
}
}]
}
我尝试使用
string.replace(/['"]+/g, '');
但是有没有什么方法可以替换整个对象。如果有任何帮助,我们将不胜感激。您可以创建自己的解析器来处理需要转换的特殊情况单词。在本例中为“真”、“假”和“空” 对于数字,您可以使用
isNaN
检查它是否是数字,然后格式化它
const输入={
“水果”:[{
“名称”:“苹果”,
“计数”:“4”,
“过滤器”:{
“独特”:[{
“属性”:“isFruit”,
“标识符”:“true”
}],
“匹配_属性”:{
“地点”:“纽泽兰”,
“子名称”:“空”
},
“匹配表达式”:[{
“属性”:“值1”,
“操作员”:“在”,
“值”:[“测试值”、“4567”、“值7”]
},
{
“属性名称”:“是蔬菜”,
“操作员”:“在”,
“值”:[“假”]
}]
}
}]
};
常量字典=[“空”、“真”、“假”]
const parser=word=>{
wordWithoutQuotes=word.substring(1,word.length-1)
if(dictionary.includes(wordWithoutQuotes)| |!isNaN(wordWithoutQuotes))返回JSON.parse(word)
回信
}
const output=JSON.stringify(input).replace(/“*?”/g,解析器);
log(输出)
您可以创建自己的解析器来处理要转换的特殊情况单词。在本例中为“真”、“假”和“空”
对于数字,您可以使用isNaN
检查它是否是数字,然后格式化它
const输入={
“水果”:[{
“名称”:“苹果”,
“计数”:“4”,
“过滤器”:{
“独特”:[{
“属性”:“isFruit”,
“标识符”:“true”
}],
“匹配_属性”:{
“地点”:“纽泽兰”,
“子名称”:“空”
},
“匹配表达式”:[{
“属性”:“值1”,
“操作员”:“在”,
“值”:[“测试值”、“4567”、“值7”]
},
{
“属性名称”:“是蔬菜”,
“操作员”:“在”,
“值”:[“假”]
}]
}
}]
};
常量字典=[“空”、“真”、“假”]
const parser=word=>{
wordWithoutQuotes=word.substring(1,word.length-1)
if(dictionary.includes(wordWithoutQuotes)| |!isNaN(wordWithoutQuotes))返回JSON.parse(word)
回信
}
const output=JSON.stringify(input).replace(/“*?”/g,解析器);
console.log(output)
如何修复“无效”JSON的源代码?为什么要将布尔值添加为文本框中的文本??为什么不使用单选按钮或复选框来处理它?这将是动态的tetxbox,用户可以在其中输入任何字符串或数字或布尔值,如1234、false、value1、value2等。textbox只处理字符串,因此如果您想区分字符串与数字和布尔值,则必须将输入值转换为bool或string。在强制转换要转换到的类型(int或bool)之前,您需要知道一种方法。如何修复“无效”JSON的源代码?为什么要将布尔值添加为文本框中的文本??为什么不使用单选按钮或复选框来处理它?这将是动态的tetxbox,用户可以在其中输入任何字符串或数字或布尔值,如1234、false、value1、value2等。textbox只处理字符串,因此如果您想区分字符串与数字和布尔值,则必须将输入值转换为bool或string。在施放要施放的类型(int或bool)之前,你需要一种知道的方法。@Melchia,这就像施法一样有效。但是如何转换数字是NaN()?。非常感谢你。@Melchia,这很有魅力。但是如何转换数字是NaN()?。非常感谢你。