java - 使用正则表达式在 Java 中拆分嵌套的 JSON

标签 java regex json split

我有一个 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 文本没有嵌套超出示例文本中显示的级别,则此表达式将:

  • 获取属性名
  • 获取属性值
  • 将值数组放在一起并且只返回顶层

(?:,|\{)?([^:]*):("[^"]*"|\{[^}]*\}|[^},]*)

enter image description here

例子

Live Demo

示例文本

{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/

相关文章:

java - 任务不可序列化错误 - Spark Java

java - 如何使 Java JFileChooser 显示所有文件,包括以点开头的文件

java - 在for循环中向arraylist添加对象,但for循环完成后arraylist为空?

java - 用于访问子面板元素的更漂亮的解决方案

javascript - 允许数字、空格、加号、连字符和括号的正则表达式

Python使用正则表达式从字符串中删除最后一个字符_

java - Gson - 任意对象

javascript - 如何在 react 中进行双json外部调用

javascript - 在 cookie 中存储和检索 json 对象

javascript - 带或不带文件扩展名的 NodeJS 路由