【问题标题】:How to write regex to extract pattern from string如何编写正则表达式从字符串中提取模式
【发布时间】:2013-08-23 01:17:40
【问题描述】:

我有一个 JSON 字符串,我想提取我需要关心的信息。我想要的是从 JSON 字符串中提取键 'name' 的值,可能有多个 'name' 条目。

例如 JSON 字符串是:

{"key1":"value1","key2":"value2","key3":"value3","name":"allen","detail":{"detailkey1":"detailvalue2","name":"john","detailkey2":"detailvalue2"}}

我需要从这个 JSON 字符串中提取“allen”和“john”。

我不熟悉正则表达式,希望有人能提供帮助。

如果你能给出java中的示例代码,那就太好了。

谢谢

更新:感谢大家的回复,我自己试了一下,其实很简单。在下面复制我的代码

final String mydata = "{\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":\"value3\",\"name\":\"allen\",\"detail\":{\"detailkey1\":\"detailvalue2\",\"name\":\"john\",\"detailkey2\":\"detailvalue2\"}}";

    final Pattern pattern = Pattern.compile("\"name\":\"(.*?)\"");
    final Matcher matcher = pattern.matcher(mydata);
    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }

【问题讨论】:

  • 尝试一下,并显示您的代码。
  • 找到一个 JSON 库并保存你的理智

标签: java regex json


【解决方案1】:

我建议使用任何 JSON 解析器来解析它。以下是使用 Java org.json 解析器的方法。

JSONObject jsonObject = new JSONObject(jsonString);
System.out.println(jsonObject.getString("name")); // allen

JSONObject detail = jsonObject.getJSONObject("detail");
System.out.println(detail.getString("name")); // john

为了支持多个名称,您需要嵌入一个 JSON 数组,而不是重复键。

JSONObject jsonObj = new JSONObject("{\"name\": [\"Mike Ross\", \"Rachel Zane\"]}");
System.out.println(jsonObj.getJSONArray("name").getString(1)); // Rachel Zane

【讨论】:

  • 自己试一试,发现很简单^_^
  • @lorcel 是的,这很简单。如果您以后觉得需要将 JSON 映射到您的 Java 对象,请查看Google Gson。如果有帮助,请不要忘记accept the answer
猜你喜欢
  • 2021-10-19
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 2014-08-25
  • 2016-12-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
相关资源
最近更新 更多