Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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_Json - Fatal编程技术网

Javascript 有没有办法根据条件动态替换整个对象中的双引号

Javascript 有没有办法根据条件动态替换整个对象中的双引号,javascript,json,Javascript,Json,我有一个像下面这样的对象,现在我需要删除双引号,如果其中任何一个值是Number或null。除这三种情况外,还应提供双引号 所有这些值都是从textbox获取的,如果我提供的值是1234,那么它将被添加为“1234” 所以,在这里,我面临着这个问题。如何避免这种情况?请告知 { "fruits":[{ "name":"apple", "count":"4", "filter":{ "unique":[{ "attri

我有一个像下面这样的对象,现在我需要删除双引号,如果其中任何一个值是Number或null。除这三种情况外,还应提供双引号

所有这些值都是从textbox获取的,如果我提供的值是1234,那么它将被添加为“1234”

所以,在这里,我面临着这个问题。如何避免这种情况?请告知

{
   "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()?。非常感谢你。