[英]Java extract strings/tags?
我有一些看起来像这样的字符串:
[{"tag":"rat","score":0.7973},{"tag":"lion","score":0.7184},{"tag":"dog","score":0.2396},{"tag":"woof","score":0.1944},{"tag":"cat","score":0.1157}]
我想按顺序从字符串中打印以下内容:
rat
lion
dog
woof
cat
我怎样才能做到这一点?
正确使用任何JSON解析库(例如GSON或Jackson) ,并将其转换为Java Object。
注意:它返回维护顺序的java.util.LinkedHashMap
。
样例代码:
String jsonString="[{\"tag\":\"rat\",\"score\":0.7973},{\"tag\":\"lion\",\"score\":0.7184},{\"tag\":\"dog\",\"score\":0.2396},{\"tag\":\"woof\",\"score\":0.1944},{\"tag\":\"cat\",\"score\":0.1157}]";
Type type = new TypeToken<ArrayList<Map<String, String>>>() {}.getType();
ArrayList<Map<String, String>> data = new Gson().fromJson(jsonString, type);
for (Map<String, String> map : data) {
System.out.println(map.get("tag"));
}
String jsonString="[{\"tag\":\"rat\",\"score\":0.7973},{\"tag\":\"lion\",\"score\":0.7184},{\"tag\":\"dog\",\"score\":0.2396},{\"tag\":\"woof\",\"score\":0.1944},{\"tag\":\"cat\",\"score\":0.1157}]";
TypeReference<ArrayList<Map<String, String>>> typeRef = new TypeReference<ArrayList<Map<String, String>>>() {};
ObjectMapper mapper = new ObjectMapper();
try {
ArrayList<Map<String, String>> data = mapper.readValue(jsonString, typeRef);
for (Map<String, String> map : data) {
System.out.println(map.get("tag"));
}
} catch (Exception e) {
System.out.println("There might be some issue with the JSON string");
}
输出:
rat
lion
dog
woof
cat
该字符串是JSON,因此您可以使用JSON解析器执行此操作。
如果您正在寻找一种简单的方法来获取"tag"
所有值,请使用此正则表达式并提取Java中的第1组。
"tag":"((?:[^"\\]|\\.)*)"
如果要在Java中使用它,请两次转义:
Pattern p = Pattern.compile("\"tag\":\"((?:[^\"\\\\]|\\\\.)*)\"");
尝试这个。 比赛在第一个捕获组中
(?:"tag":"|\G(?!^))([^"]*)
不要使用正则表达式来解析JSON。 使用类似GSON或Jackson的库
JSONArray jsa = new JSONArray(jsonString);
for (int i = 0; i < jsa.length(); i++) {
JSONObject json = jsa.getJSONObject(i);
System.out.println(json.getString("tag"));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.