Java 使用正则表达式拆分简单的JSON结构
我以前从未使用过正则表达式,我希望拆分一个包含一个或多个JSON对象的文件,这些JSON对象之间没有逗号分隔。所以我需要在“}{”之间拆分它们,并保留两个大括号。这是字符串的外观:Java 使用正则表达式拆分简单的JSON结构,java,regex,json,split,Java,Regex,Json,Split,我以前从未使用过正则表达式,我希望拆分一个包含一个或多个JSON对象的文件,这些JSON对象之间没有逗号分隔。所以我需要在“}{”之间拆分它们,并保留两个大括号。这是字符串的外观: {id:"123",name:"myName"}{id:"456",name:"anotherName"} 我想要使用string.split() 如果您的对象不比您显示的更复杂,您可以这样使用: String[] strs = str.split("(?<=\\})(?=\\{)"); 如果你的对象更复杂
{id:"123",name:"myName"}{id:"456",name:"anotherName"}
我想要使用string.split()
如果您的对象不比您显示的更复杂,您可以这样使用:
String[] strs = str.split("(?<=\\})(?=\\{)");
如果你的对象更复杂,正则表达式可能不起作用,你必须解析你的字符串。可能重复我不知道,这个问题在对象中有JSON对象,我正在尝试做一些更简单的事情,但不知道如何做。现在我使用字符串[]temp=JSON.split(\\\\\{);第一个对象很好,但我认为它删除了一些大括号,因此第二个对象不正确{,那么您唯一的机会就是真正解析它。您可以将它解析为真正的JSON,或者只解析到足以将字符串内容(可能也包含双引号)与其他内容分开,但必须对其进行解析。我想有人可能会在其中输入带有}{的注释。(JSON对象中有一个comments字段)。现在我正在使用String[]temp=JSON.split((?=\\{)”;它正在工作,但我没有考虑您提出的这个问题。感谢投票关闭的人:请阅读这两个问题。另一个是关于在PHP中拆分复杂的多级JSON字符串(这在没有解析的情况下几乎是不可能的),而这篇文章是关于在java中拆分一个特定的一级JSON字符串(这当然是可行的)。遇到了同样的问题。这很有魅力。谢谢@dystroy:)
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"}