【发布时间】:2015-11-17 17:29:07
【问题描述】:
当我尝试将下面的 json 转换为字符串时,当值没有用双引号引起来时,会得到意想不到的输出:
JSON 数据:
[
{
"Name": "param1",
"Type": "Integer",
"Default Value": 8778
},
{
"Name": "param2",
"Type": "Float",
"Default Value": 1.4
},
{
"Name": "param3",
"Type": "String",
"Default Value": true
},
{
"Name": "param4",
"Type": "String",
"Default Value": "test"
}
]
当前结果:
[{"Name":"param1","Type":"Integer","Default Value":8778}, {"Name":"param2","Type":"Float","Default Value":**1.4**}, {"Name":"param3","Type":"String","Default Value":**true**}, {"Name":"param4","Type":"String","Default Value":**"test"**}]
预期结果:
[{"Name":"param1","Type":"Integer","Default Value":**"8778"**}, {"Name":"param2","Type":"Float","Default Value":**"1.4"**}, {"Name":"param3","Type":"String","Default Value":**"true"**}, {"Name":"param4","Type":"String","Default Value":**"test"**}]
我尝试了以下代码:但它不起作用。
jsondata = JSON.stringify(confTableData);
jsondata = jsondata.replace(/:(\d+|\d*\.\d+)([,\}])/g, ':"$1"$2'); // only Integer & Float type values replaced
jsondata = jsondata.replace(/:(.)([,\}])/g, ':"$1"$2'); It gives strange result.
任何人都可以帮助我使用正则表达式模式来满足我的要求。
【问题讨论】:
-
你想在这里做什么,JSON 不需要数字引号,它正在做它应该做的事情?
-
您为什么希望将数字更改为字符串?
-
也许,您需要在第一个和第二个正则表达式中允许空格?此外,您可以仅使用
-?\d*\.?\d+匹配整数和浮点数。 -
如果要将数字更改为字符串,只需将整数和浮点数括起来即可。但我不知道你到底期待什么。
-
不要使用正则表达式操作 JSON 字符串。另外,考虑更改问题标题。我猜你的意思是“JSON.stringify:将数字和布尔值转换为字符串”。
标签: javascript json regex