将Javascript字符串转换为名称/值对对象

将Javascript字符串转换为名称/值对对象,javascript,reactjs,Javascript,Reactjs,如何将以下sting转换为名称/值对 id:"Ebene_1",version:"1.1",xmlns:"http://www.w3.org/2000/svg",x:"0px",y:"0px",xmlSpace:"preserve" d:"M8.5,23h-3C5.2,23,5,23.2,5,23.5S5.2,24,5.5,24h3C8.8,24,9,23.8,9,23.5S8.8,23,8.5,23z" height:"1",width:"3",x:"12",y:"28" 这样我就可以将结果

如何将以下sting转换为名称/值对

id:"Ebene_1",version:"1.1",xmlns:"http://www.w3.org/2000/svg",x:"0px",y:"0px",xmlSpace:"preserve" d:"M8.5,23h-3C5.2,23,5,23.2,5,23.5S5.2,24,5.5,24h3C8.8,24,9,23.8,9,23.5S8.8,23,8.5,23z" height:"1",width:"3",x:"12",y:"28"
这样我就可以将结果作为参数传递给

createElem(type, attribs){
        this.svgElem = React.createElement(type,attribs)
        console.log(this.svgElem)
我曾考虑过将其拆分为逗号数组,但这对d:属性不起作用


感激地收到的任何指针都使用这个JavaScript方法,JSON.parsestring


您必须首先确保字符串的格式正确。然后使用JSON.parse

变量字符串=“{name:bob,age:26}”; var k=JSON.parsestring;
console.logk 尝试使用正则表达式:

var m, 
    result = {},
    re = /([a-z]+):("[^"]+")/gi,
    str = 'id:"Ebene_1",version:"1.1",xmlns:"http://www.w3.org/2000/svg",x:"0px",y:"0px",xmlSpace:"preserve" d:"M8.5,23h-3C5.2,23,5,23.2,5,23.5S5.2,24,5.5,24h3C8.8,24,9,23.8,9,23.5S8.8,23,8.5,23z" height:"1",width:"3",x:"12",y:"28"';

do {
    m = re.exec(str);
    if (m) result[m[1]] = m[2];
} while (m);
console.log(result);
输出:

d: ""M8.5,23h-3C5.2,23,5,23.2,5,23.5S5.2,24,5.5,24h3C8.8,24,9,23.8,9,23.5S8.8,23,8.5,23z""
height: ""1""
id: ""Ebene_1""
xmlSpace: ""preserve""
version: ""1.1""
width: ""3""
x: ""12""
xmlns: ""http://www.w3.org/2000/svg""
y: ""28""

为什么你认为这个字符串是一个有效的JSON字符串并且可以被解析?我们可以在开头和结尾手动添加大括号。在字符串中,每个键用冒号与其值分隔,对用逗号分隔,这是典型的JSON样式。@T.Liu,键必须用JSON引用。这不是JSON。然后,我们可以在逗号之后和冒号之前添加双引号。字符串不是JSON,但只需要很小的格式更改就可以变成JSON。说来话长,但这个字符串是我自己制作的,因为提供给我的svg数据对反应不友好,我只是试图去掉所有不必要的属性,然后重新创建图标。这个字符串来自哪里?您是自己生成的吗?如果您是从某个地方获取字符串的,而该字符串似乎很可能是最好的,只使用对象本身作为参数。请参见另一个答案。@zfrisch,这仍然是一个有效的答案项目更多的是获取字符串值作为有效的JSON进行解析,而不是调用JSON.parseSure,但问题是如何将字符串解析为object谢谢你这么做,但我会重新查看我的原始数据,看看是否可以尽早使用Json如果你能以Json格式导出数据,事情会简单得多。但是,我建议不要修改字符串,使其类似于json。乍一看,我认为这是可行的,但是如果您看到正则表达式正在从xmlSpace属性中剥离xmlS,而我的低级正则表达式经验无法解释原因。我已更新了我的回答。regex现在不区分大小写了我已经把它缩小到了S,但在如何修复它上进展缓慢,我仍然知道我知道一些新的东西。