我在括号中有各种字符串,例如"[4]Motherboard, [25]RAM"
如何将这样的字符串转换为JSON数组(同时保留ID和值):
{"data":[
{"id":"4","item":"Motherboard"},
{"id":"25","item":"RAM"}
]};
我尝试使用split(",")
创建数组,但在这种情况下我真的无法找到如何获取内部数据。
答案 0 :(得分:2)
这是一种方法。模式\[(\d+?)\](.+)
的工作方式如下:
(…)
是一个捕获组。只是意味着括号内的任何匹配都是结果中的标记。\d
表示数字\d+
表示数字,一次或多次\d+?
表示一个数字,一次或多次,但在模式与其他内容匹配之前尽可能少。.+
表示任何角色,一次或多次。 [
和]
在正则表达式中具有特殊含义,因此如果您确实想要匹配字符本身,则需要转义它们{{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),
};
}),
};
}