Java中基于大括号分割字符串的正则表达式求解
问题:分割JSON对象字符串为独立元素
原始字符串格式如下:
String str = "{\"name\":\"SachText_singleLineText\",\"value\":\"text project field\"},{\"name\":\"SachSlistSingle_singleSelect\",\"value\":\"s1\"},{\"name\":\"SachYesno_boolean\",\"value\":[\"1\"]}";
需求是将该字符串分割为以下独立的JSON对象元素:
[0] = {"name":"SachText_singleLineText","value":"text project field"} [1] = {"name":"SachSlistSingle_singleSelect","value":"s1"} [2] = {"name":"SachYesno_boolean","value":["1"]}
当前尝试的错误代码:
String[] projectfieldsValueArray = str.split("\\{\\{,\\}\\}");
正确的正则表达式及处理代码
你需要匹配的是两个JSON对象之间的分隔符:},{,这才是大括号包裹的独立对象的分界点。注意正则中需要转义{和}这两个特殊字符。
分割代码
String[] projectfieldsValueArray = str.split("\\},\\{");
补全首尾字符
分割后第一个元素会缺失开头的{,最后一个元素会缺失结尾的},需要手动补全:
// 补全第一个元素的开头大括号 projectfieldsValueArray[0] = "{" + projectfieldsValueArray[0]; // 补全最后一个元素的结尾大括号 int lastIdx = projectfieldsValueArray.length - 1; projectfieldsValueArray[lastIdx] = projectfieldsValueArray[lastIdx] + "}";
错误原因说明
你之前写的\\{\\{,\\}\\}是匹配{{,}}这种字符串,和实际的分隔符完全不符,所以无法正确分割目标字符串。
内容的提问来源于stack exchange,提问作者Sachin HR
相关产品推荐
相关产品推荐

