2014-12-23 149 views
0

我想以高贵的方式这种字符串变换:解析字符串转换成字典

"{lastname=Oba, firstname=Bar}"

var person = []; 
person["firstName"] = "Bar"; 
person["lastName"] = "Oba"; 

我尝试用JSON解析,但没有工作, 我不不知道如何不肮脏splitting

+0

它不是[JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)因此JSON.parse不起作用 – epascarello

+0

最上面的项目只是一个字符串,它不是JSON,因此JSON.parse不起作用 – TommyBs

+0

确定它不是JSON,但它有一个简单的解析器吗? – gregouille

回答

0

这段代码应该很容易解析这个。

function myParser(str) { 
    return str.slice(1, -1).split(',').map(function(el) { 
     return el.trim() 
    }).map(function(el) { 
     return el.split('=') 
    }).reduce(function(result, pair) { 
     result[pair[0].trim()] = pair[1].trim(); 
     return result 
    }, {}); 
} 

它会如预期仅小群属性和DATAS的,但搞清楚这些情况下,修复该行为是阔叶锻炼的读者。

+0

whao真的很好,谢谢 – gregouille

0

算法:
分裂的条纹

的Python

s = "{lastname=Oba, firstname=Bar}" 

l = s[1:-1].split(",") 
d = {} 
for e in l: 
    a = e.split("=") 
    d[a[0].strip()] = a[1].strip() 

 

的JavaScript

:由 ,克你会得到 A=B对列表,然后通过 =和形式字典拆分每个对名单
var s = "{lastname=Oba, firstname=Bar}"; 

var l = s.slice(1,-1).split(','); 
var d = {}; 
for (var i in l) { 
    var a = l[i].split('='); 
    d[a[0].trim()] = a[1].trim(); 
}