"{INDIA=99, PAKISTAN=30}"
我有这种形式的字符串,想转换成json对象。 试过了
JSON.parse({INDIA=99, PAKISTAN=30}).
但是收到错误
VM2602:1未捕获的SyntaxError:位置1的JSON中出现意外的令牌O
答案 0 :(得分:3)
您的字符串有两个问题:
:
)分隔,而不是等于(=
)。虽然最好的方法是纠正JSON(输入字符串)字符串本身,但您可以尝试使用此方法从当前字符串创建对象。
注意:这不是一个强大的解决方案。由于此解决方案依赖于要拆分的字符串中的逗号,如果此模式在
{India=100, 000, 000}
之类的值中可用,则此解决方案将失败。所以把它作为你的最后手段。字符串操作绝不会100%覆盖。
var str = "{INDIA=99, PAKISTAN=30}";
var kv = str.substring(1, str.length -1);
var list = kv.split(", ");
var result = list.reduce(function(p,c){
var parts = c.split('=');
p[parts[0]] = parts[1];
return p;
}, {})
console.log(result)
答案 1 :(得分:2)
您的输入不是有效的JSON。您可以尝试将其转换为适当的字符串,然后在尝试时调用JSON.parse
。请参阅下面的代码段,随时询问您是否还有其他问题。
const str = "{INDIA=99, PAKISTAN=30}";
const result = JSON.parse(str.replace(/\=/g, ':').replace(/([a-zA-Z]+)/g, '"$1"'));
console.log(result);
console.log(result['INDIA']);

答案 2 :(得分:1)
尝试使用replace
和split
字符串。并使用Array#forEach
var str ="{INDIA=99, PAKISTAN=30}" ;
var c = str.replace(/[\}\{]/g,'').trim().split(',')
var res={};
c.forEach(a=> res[a.split('=')[0].trim()] = a.split('=')[1].trim())
console.log(res)

答案 3 :(得分:0)
您没有提供有效的JSON。
为了使JSON.parse()
起作用,您需要提供有效的JSON。
示例:
{"INDIA": 99, "PAKISTAN": 30}
:
JSON.parse('{"INDIA": 99, "PAKISTAN": 30}');
希望这有帮助!
答案 4 :(得分:0)
你需要在键周围加上字符,否则它不会被读取。 所以:
var str = '{"INDIA":99, "PAKISTAN":30}'
JSON.parse(str);
这应该有效。
答案 5 :(得分:0)
此
JSON.parse('{"INDIA":99, "AKISTAN":30}')