使用正则表达式拆分简单的JSON结构

时间:2012-11-14 17:56:25

标签: java regex json split

我之前从未使用过正则表达式,我希望拆分一个包含一个或多个JSON对象的文件,JSON对象不用逗号分隔。所以我需要在“} {”之间拆分它们并保持两个花括号。这就是字符串的样子:

{id:"123",name:"myName"}{id:"456",name:"anotherName"}

我想要一个像string.split()

这样的字符串数组
["{id:"123",name:"myName"}", "{"id:"456",name:"anotherName"}"]

1 个答案:

答案 0 :(得分:12)

如果您的对象并不比您显示的对象更复杂,您可以使用lookarounds这样:

String[] strs = str.split("(?<=\\})(?=\\{)");

例如:

String str = "{id:\"123\",name:\"myName\"}{id:\"456\",name:\"yetanotherName\"}{id:\"456\",name:\"anotherName\"}";
String[] strs = str.split("(?<=\\})(?=\\{)");
for (String s : strs) {
    System.out.println(s);          
}

打印

{id:"123",name:"myName"}
{id:"456",name:"anotherName"}
{id:"456",name:"yetanotherName"}

如果你的对象更复杂,那么正则表达式可能不会起作用,你必须解析你的字符串。