Javascript 从类似JSON的字符串-Regex生成有效的JSON?
我有一个类似JSON的字符串,看起来像:Javascript 从类似JSON的字符串-Regex生成有效的JSON?,javascript,json,regex,Javascript,Json,Regex,我有一个类似JSON的字符串,看起来像: {key1:my.value1,key2:value2} 它不能有任何嵌套对象或数组。 我甚至可以证明正则表达式总是这样 var re=/^\{[A-Z0-9.\]+:[A-Z0-9.\]+(,[A-Z0-9.\]+:[A-Z0-9.\]+)*}$/i; console.log(re.test({key1:my.value1,key2:value2}')//true如果它始终是那种格式,我可能会执行以下操作: 修剪花括号 将剩余字符串按,拆分,然后
{key1:my.value1,key2:value2}
它不能有任何嵌套对象或数组。
我甚至可以证明正则表达式总是这样
var re=/^\{[A-Z0-9.\]+:[A-Z0-9.\]+(,[A-Z0-9.\]+:[A-Z0-9.\]+)*}$/i;
console.log(re.test({key1:my.value1,key2:value2}')//true
如果它始终是那种格式,我可能会执行以下操作:
- 修剪花括号
- 将剩余字符串按
拆分,然后得到如下数组:,
['key:my.value1','key2:my.value2']
- 迭代该列表中的所有条目,并按
拆分每个条目,这将为您提供键/值对:
如果您只需要迭代整个实体,那么就可以开始了。如果要将其转换为json,请创建一个新映射并将键/值对放入其中 如果您确定格式,只需将每个
key:value
对用引号括起来,就可以创建一个JSON字符串
var str='{key1:my.value1,key2:value2}',
rx=/([A-Z0-9.+):([A-Z0-9.+)/gi;
log(JSON.parse(str.replace(rx,“$1”:“$2”)代码>这样可以吗。->
function makeJsonString(v) {
var s = v.split(/({|}|:|,)/g).
filter(function (e) { return e.length !== 0 }),
r = '{}:,';
for (var l = 0; l < s.length; l ++) {
var x = s[l];
if (r.indexOf(x) < 0) {
s[l] = '"' + s[l] + '"';
}
}
return s.join('');
}
var x = makeJsonString('{key1:my.value1,key2:value2}');
//parse check
console.log(JSON.parse(x));
函数makeJsonString(v){
var s=v.split(/({124;}}:|,)/g)。
过滤器(函数(e){返回e.length!==0}),
r='{}:',';
对于(var l=0;l
示例->我们是否假设my
、my.value1
和value2
都是在当前范围内定义的?您好@Phil,它实际上是字符串,所以值也应该始终是字符串,请检查我的editnice方法:)我推荐@Phill one,不过您对这个解决方案很满意。