将字符串转换为javascript对象

将字符串转换为javascript对象,javascript,jquery,Javascript,Jquery,我有这个形式的字符串,想转换成json对象。 试过 JSON.parse({INDIA=99,PAKISTAN=30})。 但是犯了错误 VM2602:1未捕获的语法错误:JSON中位置1处的意外标记O 您没有提供有效的JSON 为了使JSON.parse()正常工作,您需要提供有效的JSON 例如: {“印度”:99,“巴基斯坦”:30} 在代码中: "{INDIA=99, PAKISTAN=30}" 希望这有帮助 键周围必须有字符,否则无法读取。 因此: 那应该行。这个 var str

我有这个形式的字符串,想转换成json对象。 试过

JSON.parse({INDIA=99,PAKISTAN=30})。

但是犯了错误

VM2602:1未捕获的语法错误:JSON中位置1处的意外标记O


您没有提供有效的JSON

为了使
JSON.parse()
正常工作,您需要提供有效的JSON

例如:

{“印度”:99,“巴基斯坦”:30}

在代码中:

"{INDIA=99, PAKISTAN=30}" 

希望这有帮助

键周围必须有字符,否则无法读取。 因此:

那应该行。

这个

var str = '{"INDIA":99, "PAKISTAN":30}'
JSON.parse(str);

您的输入不是有效的JSON。您可以尝试将其转换为适当的字符串,然后在尝试时调用
JSON.parse
。请参阅下面的片段,如果您还有任何问题,请随时提问

const str=“{印度=99,巴基斯坦=30}”;
const result=JSON.parse(str.replace(/\=/g',:')。replace(/([a-zA-Z]+)/g',“$1”);
控制台日志(结果);

console.log(结果['INDIA'])
尝试
替换
拆分
字符串。并使用
数组#forEach

var str=“{印度=99,巴基斯坦=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)
您的字符串有两个问题:

  • 键和值用冒号(
    )分隔,而不是用等于(
    =
    )分隔
  • 键应该用引号括起来
  • 尽管最好的方法是纠正JSON(输入字符串)字符串本身,但您可以尝试这种方法从当前字符串创建对象

    注意:这不是一个健壮的解决方案。由于此解决方案依赖字符串中的逗号进行拆分,如果此模式的值为
    {India=100000,000}
    ,则此解决方案将失败。因此,请将此视为您的最后手段。字符串操作永远不会100%覆盖

    var str=“{印度=99,巴基斯坦=30}”;
    var kv=短串子串(1,短串长度-1);
    var列表=千伏分裂(“,”);
    var result=list.reduce(函数(p,c){
    var parts=c.split('=');
    p[零件[0]]=零件[1];
    返回p;
    }, {})
    
    console.log(result)
    JSON.parse(“{”INDIA:99,“PAKISTAN:30}”)这个字符串不是JSON,所以不能被解析为JSON。手动解析它或替换()使它看起来像JSON需要什么(ymmv这样做)。如果您的字符串确实是这样的,您能返回到它来自的任何地方并更改输出吗?如果您能使其成为标准JSON,您的工作将更轻松。以下内容对您有用吗?JSONParser parser=new JSONParser();JSONObject JSON=(JSONObject)parser.parse(“{INDIA=99,PAKISTAN=30}”);@Amit这不是一个有效的json这里是:在中间我相信这应该是一个很好的解决方案。如果他不能更改原始内容,可能会满足他的需要。
    var str = '{"INDIA":99, "PAKISTAN":30}'
    JSON.parse(str);
    
    JSON.parse('{"INDIA":99, "AKISTAN":30}')