我有一个 JSON 字符串:
{name:"X",age:{dob:"DD MMM",year:YYYY}}
我需要一个 Hashtable<String, String>
对像:
name: "X"
age: {dob:"DD MMM",year:YYYY}
我正在使用
string.substring(1,string.length() - 2).split(",");
如何使用正则表达式实现此目的?
最佳答案
描述
如果您的 JSON 文本没有嵌套超出示例文本中显示的级别,则此表达式将:
- 获取属性名
- 获取属性值
- 将值数组放在一起并且只返回顶层
(?:,|\{)?([^:]*):("[^"]*"|\{[^}]*\}|[^},]*)
例子
示例文本
{name:"X",age:{dob:"DD MMM",year:YYYY}}
代码
String sourcestring = "source string to match with pattern";
Pattern re = Pattern.compile("(?:,|\\{)?([^:]*):(\"[^\"]*\"|\\{[^}]*\\}|[^},]*)",Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
Matcher m = re.matcher(sourcestring);
匹配
[0][0] = {name:"X"
[0][1] = name
[0][2] = "X"
[1][0] = ,age:{dob:"DD MMM",year:YYYY}
[1][1] = age
[1][2] = {dob:"DD MMM",year:YYYY}
关于java - 使用正则表达式在 Java 中拆分嵌套的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17903283/