将括号中带索引的字符串转换为JSON数组

时间:2016-11-09 09:45:54

标签: javascript json split

我在括号中有各种字符串,例如"[4]Motherboard, [25]RAM"如何将这样的字符串转换为JSON数组(同时保留ID和值):

{"data":[
  {"id":"4","item":"Motherboard"},
  {"id":"25","item":"RAM"}
]};

我尝试使用split(",")创建数组,但在这种情况下我真的无法找到如何获取内部数据。

3 个答案:

答案 0 :(得分:2)

这是一种方法。模式\[(\d+?)\](.+)的工作方式如下:

  1. (…)是一个捕获组。只是意味着括号内的任何匹配都是结果中的标记。
  2. \d表示数字
  3. \d+表示数字,一次或多次
  4. \d+?表示一个数字,一次或多次,但在模式与其他内容匹配之前尽可能少。
  5. .+表示任何角色,一次或多次。
  6. []在正则表达式中具有特殊含义,因此如果您确实想要匹配字符本身,则需要转义它们{{1} }和\[

    通过字符串定义正则表达式而不是使用\]时,双反斜杠\\只是一个JS奇怪的东西。只有两种方式可以说同样的事情。

    有足够的资源来学习正则表达式语法,http://regex101.com是一个很好的模式和实验场所。

    /literal/

答案 1 :(得分:2)

您可以使用正则表达式,它接受数字和字符串,并将其作为属性分配给对象。

$_POST

答案 2 :(得分:1)

function toArray(string) {
    return {
        data: string.split(",").map(function(str) {
            str = str.trim();
            return {
                id: str.substring(1, str.indexOf("]")),
                item: str.substring(str.indexOf("]") + 1),
            };
        }),
    };
}