-1

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

例如 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));
    }
4

1 回答 1

6

我建议使用任何 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
于 2013-08-23T01:23:54.547 回答