繁体   English   中英

如何解析此json?

[英]How to can I parse this json?

我试图解析从此url返回的Json结果 我想获取标题,内容和缩略图值。 我试图制作一个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 强烈暗示着有一个班级正在诞生。

这是一些示例代码。 除了解决该问题外,我还进行了其他一些小的样式和变量名更改(例如, 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;
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM