Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式拆分简单的JSON结构_Java_Regex_Json_Split - Fatal编程技术网

Java 使用正则表达式拆分简单的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("(?<=\\})(?=\\{)"); 如果你的对象更复杂

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

{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"}