[英]Using Jackson to manually parse JSON
可以使用Jackson庫手動解析JSON嗎?
也就是說,我不想使用ObjectMapper
並將JSON轉換為某些對象,而是想從JSON中選擇一些單獨的屬性,例如在XPath中:
例如,這是我的JSON:
{
"person": {
"name": "Eric",
"surname": "Ericsson",
"address" {
"city": "LA",
"street": "..."
}
}
}
我想要的只是獲取Name和City,在這種情況下,我不想引入2個新的Java類( Person
和Address
)並將它們與ObjectMapper
一起使用,但是我只想讀取此值,例如XPATH:
偽代碼:
String name = myJson.get("person").get("name")
String city = myJson.get("person").get("address").get("city")
您可以使用Jackson樹模型和JsonNode#at(...)
方法,該方法將Json Pointer表達式作為參數。
這是一個例子:
public class JacksonJsonPointer {
static final String JSON = "{"
+ " \"person\": {"
+ " \"name\": \"Eric\","
+ " \"surname\": \"Ericsson\","
+ " \"address\": {"
+ " \"city\": \"LA\","
+ " \"street\": \"...\""
+ " }"
+ " }"
+ "}";
public static void main(String[] args) throws IOException {
final ObjectMapper mapper = new ObjectMapper();
final JsonNode json = mapper.readTree(JSON);
System.out.println(json.at("/person/name"));
System.out.println(json.at("/person/address/city"));
}
}
輸出:
"Eric"
"LA"
是的,您可以使用Json解析器解析Json,以下是示例示例,您可以在jackson文檔中找到更多信息
JsonParser jsonParser = new JsonFactory().createJsonParser(jsonStr);
while(jsonParser.nextToken() != JsonToken.END_OBJECT){
String name = jsonParser.getCurrentName();
if("name".equals(name)) {
jsonParser.nextToken();
System.out.println(jsonParser.getText());
}
if("surname".equals(name)) {
jsonParser.nextToken();
System.out.println(jsonParser.getText());
}
if("city".equals(name)) {
jsonParser.nextToken();
System.out.println(jsonParser.getText());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.