java - 我该如何解析这个json?

标签 java json gson

我正在尝试解析the Json result returned from this url 。我想获取标题、内容和缩略图值。我尝试创建一个 java 类来映射这些值。

import java.util.List;

public class Dbpediaresults {

  private Results results;

  public Results getResults() {
    return results;
  }

  public void setResults(Results results) {
    this.results = results;
  }

  public static class Results {
    private List<Bindings> bindings;

    public List<Bindings> getBindings() {
      return bindings;
    }

    public void setBindings(List<Bindings> bindings) {
      this.bindings = bindings;
    }

  }

  public static class Bindings {
    private List<Title> title;
    private List<content> content;
    private List<Thumbnail> thumbnail;

    /**
     * @return the title
     */
    public List<Title> getTitle() {
      return title;
    }

    public void setTitle(List<Title> title) {
      this.title = title;
    }

    public List<content> getContent() {
      return content;
    }

    public void setContent(List<content> content) {
      this.content = content;
    }

    public List<Thumbnail> getThumbnail() {
      return thumbnail;
    }

    public void setThumbnail(List<Thumbnail> thumbnail) {
      this.thumbnail = thumbnail;
    }

  }

  private static class Title {
    private String value;

    public String getValue() {
      return value;
    }

    public void setValue(String value) {
      this.value = value;
    }

  }

  private static class content {
    private String value;

    public String getValue() {
      return value;
    }

    public void setValue(String value) {
      this.value = value;
    }
  }

  private static class Thumbnail {
    private String value;

    public String getValue() {
      return value;
    }

    public void setValue(String value) {
      this.value = value;
    }
  }

}

我尝试了这个方法来获得结果,但它不起作用。

Dbpediaresults results = new Gson().fromJson(input, Dbpediaresults.class);

这里的输入是从上面的 URL 返回的 json 输出的 String

我的 Dbpediaresults 类是否可以正确映射标题、内容和缩略图值?如果不是,我怎样才能正确解析它?

最佳答案

Gson不会破坏Binding像这样分成三个单独的列表。解决此问题的最简单方法是创建包含单个 List<Binding> 的内容。 ,其中Binding是一个代表标题、内容和缩略图这三者的类。无论如何,最好将它们作为多个并行保持在一起 List s 是 strong hint that there's a class waiting to be born.

这是一些示例代码。除了解决问题之外,我还进行了一些其他小的样式和变量名称更改(例如 class Content 在代码中小写,并删除了 setter )。

public class Dbpediaresults {
  private Results results;

  public Results getResults() {
    return results;
  }

  public void setResults(Results results) {
    this.results = results;
  }

  public static class Results {
    private List<Binding> bindings;

    public List<Binding> getBindings() {
      return bindings;
    }
  }

  public static class Binding {
    private Title title;
    private Content content;
    private Thumbnail thumbnail;

    public Title getTitle() {
      return title;
    }
    public Content getContent() {
      return content;
    }
    public Thumbnail getThumbnail() {
      return thumbnail;
    }
  }

  public static class Title {
    private String value;
    public String getValue() {
      return value;
    }
  }

  public static class Content {
    private String value;
    public String getValue() {
      return value;
    }
  }

  public static class Thumbnail {
    private String value;
    public String getValue() {
      return value;
    }
  }
}

关于java - 我该如何解析这个json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29903730/

相关文章:

javascript - 通过 JSON 向 SQL 数据库发送和接收数组

Android空对象引用异常

Java 线程优化

java - 如果两个线程正在等待进入一个同步方法,当互斥量被释放时,它们是否按照它们到达的顺序执行?

javascript - 合并 JSON 数组

javascript - 如何从json文件中正确提取信息?

java - 如何确定何时到达 map 航路点

java - Java中如何只接受用户的特定格式的数字?

PHP/MySQL/PDO - 结果为假但没有数据库错误消息?

android - 如何为改造 2 制作单例?