我想知道是否可以使用jackson库进行这种精确的操作。
String repo = response.toString();
JSONObject json = new JSONObject (repo);
String nameOfUser = json.getJSONObject(facebookID).getString("name");
谢谢,
答案 0 :(得分:1)
是。类似的东西:
ObjectMapper mapper = new ObjectMapper(); // reuse, usually static final
JsonNode ob = mapper.readTree(response.toString()); // or from File, URL, InputStream, Reader
String nameOfUser = ob.path(facebookID).path("name").asText();
// note: '.get()' also works, but returns nulls, 'path()' safer
虽然通常使用JSON指针表达式进行更方便的访问,例如:
String name = ob.at("/person/id").asText();
但我认为facebookID
是来自其他来源的ID。
更新:根据下面的评论,您想要的结构实际上可能是POJO:
public class Response {
public User facebookID;
}
public class User {
public String id;
public String email;
public String first_name;
// ... and so forth: fields and/or getter+setter
}
然后你可以像这样直接绑定到类中:
Response resp = mapper.readValue(response.toString(), Response.class);
String name = resp.facebookID.name;
因此,与杰克逊合作的方式不止一种。