我有一个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));
}
答案 0 :(得分: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