我有一個這樣的 JSON
"tags": [
{
"key": "category",
"value": "Prototype Pollution"
},
{
"key": "cvss_31_severity_rating",
"value": "medium"
},
{
"key": "cvss_score",
"value": "4"
},
{
"key": "cwe_category",
"value": "1321"
},
{
"key": "language",
"value": "javascript"
},
{
"key": "owasp_2021_category",
"value": "a03-injection"
},
{
"key": "owasp_category",
"value": "a03-2021-injection"
},
{
"key": "owasp_category",
"value": "a1-injection"
},
{
"key": "severity",
"value": "moderate"
},
{
"key": "sink_method",
"value": "Object.assign"
},
{
"key": "source_method",
"value": "^axios^.post"
}
],
我想獲取與“key”對應的值:cvss_score。我試著撿起一個
list<Map<String, String>> 地圖=response.getBody.jsonPath.getList("tags");
但無法正確決議,有人可以告訴我如何正確決議嗎
uj5u.com熱心網友回復:
如果您使用 Genson,則有一個將 JSON 決議為純 Java 集合的示例,這與您提到的非常接近:
http://genson.io/GettingStarted/#java-collections
本質上,您的代碼如下所示:
Genson genson = new Genson();
List<Object> persons = genson.deserialize("[{\"age\":28,\"name\":\"Foo\"}]", List.class);
uj5u.com熱心網友回復:
您可以使用簡單的 JSON 庫,您可以實作以下目標
private Map<String, String> getTagsMap(String json){
JSONArray tagsArray = new JSONObject(json).getJSONArray("tags");
Map<String, String> map = new HashMap<>();
for(int i = 0; i < tagsArray.length(); i ) {
map.put(tagsArray.getJSONObject(i).getString("key"), tagsArray.getJSONObject(i).getString("value"));
}
return map;
}
Map<String, String> map = getTagsMap(json);
System.out.println(map.get("cvss_score")); //4
uj5u.com熱心網友回復:
如果您使用的是 Jackson 庫,那么下面的代碼段可能會幫助您實作所需的輸出。
注意:根據您的輸入格式化 JSON 字串,我只是以一個示例陣列為例。
String json = "{ \"MyStringArray\" : [\"somestring1\", \"somestring2\"] }\n";
JsonNode parent= new ObjectMapper().readTree(json);
String content = parent.get("MyStringArray").get(0).asText();
System.out.println(content);
uj5u.com熱心網友回復:
問題是資料結構并不像你想象的那樣。它不是 Map,而是鍵/值的 POJO/Bean。我已經使用 ObjectMapper 在代碼中進行了演示:
Map<String, String> map = new HashMap<String, String>();
map.put("source_method", "^axios^.post");
map.put("sink_method", "Object.assign");
List<Map<String, String>> list = Arrays.asList(map);
String jsonArrayOfMap = new ObjectMapper().writeValueAsString(list);:
產生這個json(美化):
[
{
"source_method": "^axios^.post",
"sink_method": "Object.assign"
}
]
雖然您想要的代碼類似于:
List<Bean> beanList = Arrays.asList(new Bean("source_method", "^axios^.post"), new Bean("sink_method", "Object.assign"));
String jsonListOfBeans = new ObjectMapper().writeValueAsString(beanList);
System.out.println(jsonListOfBeans)
產生輸出:
[
{
"value": "^axios^.post",
"key": "source_method"
},
{
"value": "Object.assign",
"key": "sink_method"
}
]
豆類:
public class Bean
{
String key;
String value;
public Bean()
{
}
public Bean(String key, String value)
{
this.key = key;
this.value = value;
}
public String getKey()
{
return key;
}
public void setKey(String key)
{
this.key = key;
}
public String getValue()
{
return value;
}
public void setValue(String value)
{
this.value = value;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/512208.html
