java - 使用 com.fasterxml.jackson 而不是 org.json 解析 Json

标签 java json parsing jackson

我想知道是否可以使用 jackson 库来完成这个精确的操作。

String repo = response.toString();
JSONObject json = new JSONObject (repo);
String nameOfUser = json.getJSONObject(facebookID).getString("name");

谢谢,

最佳答案

是的。像这样的东西:

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
}

然后你可以直接绑定(bind)到类中,如下所示:

Response resp = mapper.readValue(response.toString(), Response.class);
String name = resp.facebookID.name;

因此,对于 jackson 来说,有不止一种方法可以做到这一点。

关于java - 使用 com.fasterxml.jackson 而不是 org.json 解析 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494308/

相关文章:

java - JVisualVM 内存采样 : Remote applications are not supported

javascript - 如何在 javascript 中解析 JSON 数组,该数组中的每个对象都有单引号?

error-handling - AST具有固定节点而不是antlr中的错误节点

json - 从推送通知解析时的 SwiftyJson 解析问题

java - Java 中的循环和字符串

java - 如何在内存数据库中使用带有 play java 的注入(inject)测试

java - 如何在 JPanel 和 JFrame 的 contentPane 之间添加间距?

android - 在 android 中创建 JSON 对象失败

jquery - highcharts 通过 JSON 获取数据?

parsing - 使用秒差距解析命令式语言的奇怪行为