如何将字符串转换为键值json / array?

时间:2014-07-02 16:39:27

标签: javascript jquery arrays json

我收到这个字符串:

    arguments: {[

    { style: "fill: red; stroke-width: 1; stroke: black;" }
]}

我想获取特定属性的值。我已经最终得到了风格的价值。

"fill: red; stroke-width: 1; stroke: black;"

我想将其转换为数组或json,以便我可以搜索密钥。但我不确定该怎么做。

4 个答案:

答案 0 :(得分:2)

将字符串拆分为基于;的样式,然后根据:拆分:

var ss = "fill: red; stroke-width: 1; stroke: black;";
var styles = {};

var parts = ss.split(/\s*;\s*/);

for ( var i = 0; i < parts.length; ++i )
  {
    var vv = parts[i].split(/\s*:\s*/);

    if (vv.length == 2)
      styles[vv[0]] = vv[1];
  }

之后,styles将包含:

{
  'fill': 'red',
  'stroke': 'black',
  'stroke-width': '1'
}

可以访问:

console.log(styles['fill']); // etc.

答案 1 :(得分:2)

一线解决方案

var s="fill: red; stroke-width: 1; stroke: black;";
var dict = {}
s.split(";").map(function (e){ if (e) {var parts = e.split(":"); dict[parts[0].trim()] = parts[1].trim()  }})
//dict = {fill: "red", stroke-width: "1", stroke: "black"}

答案 2 :(得分:0)

你实际上可以创建一个元素并将其作为style属性,然后检查一个特定的样式 - 但只要字符串使用split一致格式良好就可以了。

var styles = arguments[0].style.split(";");
styles.forEach(function (style) {
    var pair = style.split(":");
    if (pair[0] == "fill") {
        pair[1] == "red";
    }
});

答案 3 :(得分:0)

要简单地使用键搜索值,您不需要将其转换为对象。这是一个例子:

var str = "fill: red; stroke-width: 1; stroke: black;",
    key = "fill";

str.match(new RegExp(key+": "+"([^;]+);"))[1];   //"red"