Java提取字符串/标签?

use*_*948 0 java regex string

我有一组看起来像这样的字符串:

[{"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}]
Run Code Online (Sandbox Code Playgroud)

我想从字符串中按顺序打印以下内容:

rat
lion
dog
woof
cat
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Bra*_*raj 5

正确使用任何JSON解析库(如GSONJackson)并将其转换为Java Object.

注意:它返回java.util.LinkedHashMap维护订单.

示例代码:

GSON

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"));
}
Run Code Online (Sandbox Code Playgroud)

杰克逊

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");
}
Run Code Online (Sandbox Code Playgroud)

输出:

rat
lion
dog
woof
cat
Run Code Online (Sandbox Code Playgroud)