首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Gson提取字段?

如何用Gson提取字段?
EN

Stack Overflow用户
提问于 2014-03-04 12:57:41
回答 2查看 752关注 0票数 0

我有这个json代码(它是整个json代码的一部分):

代码语言:javascript
复制
{
  "numFound": 41, 
  "edges": [
    {
      "endLemmas": "albero", 
      "context": "/ctx/all", 
      "end": "/c/it/albero/v", 
      "features": [
        "/c/it/alberatura /r/ConceptuallyRelatedTo -", 
        "/c/it/alberatura - /c/it/albero/v", 
        "- /r/ConceptuallyRelatedTo /c/it/albero/v"
      ], 
      "license": "/l/CC/By-SA", 
      "start": "/c/it/alberatura", 
      "startLemmas": "alberatura", 
      "text": [
        "albero", 
        "alberatura"
      ], 
      "uri": "/a/[/r/ConceptuallyRelatedTo/,/c/it/alberatura/,/c/it/albero/v/]", 
      "weight": 1.0, 
      "dataset": "/d/conceptnet/5/combined-sa", 
      "sources": [
        "/and/[/s/rule/wiktionary_monolingual_definitions/,/s/web/en.wiktionary.org/]"
      ], 
      "score": 7.81056, 
      "rel": "/r/ConceptuallyRelatedTo", 
      "timestamp": "2013-09-12T16:30:04.157Z", 
      "nodes": [
        "/r/ConceptuallyRelatedTo", 
        "/c/it/albero/v", 
        "/c/it/alberatura"
      ], 
      "id": "/e/021aa72c7605d9d2000f0774a0bf9042699fa6ee", 
      "surfaceText": "[[alberatura]] ConceptuallyRelatedTo [[albero]]"
    }, 

如何提取“特性”字段?我可以提取一些字段,比如“上下文”或“结束”,但是对于“特性”,我不能!:

我的Java代码:

代码语言:javascript
复制
   public static void main(String[] args) throws IOException {

   URL url = new URL("http://conceptnet5.media.mit.edu/data/5.1/c/it/albero?get=context");
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      conn.setRequestMethod("GET");
      conn.setRequestProperty("Accept", "application/json");
      BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));

      String inputLine;

      GsonCNItem gsonCNObj = new Gson().fromJson(br, GsonCNItem.class);

      for (int i = 0; i < 3; i++) {
        try{
          gsonCNObj.getCNThing(i);
        }catch (IndexOutOfBoundsException e) {}      
      }
    }

我的GsonCNItem课程:

代码语言:javascript
复制
public class GsonCNItem {

  private String context;
  private String end;
  private List<GsonCNItem> edges;

  public List<GsonCNItem> getCNedges(){
    return edges;
  }

 public void getCNThing (int i){
    System.out.println(edges.get(i));
  }

  public String toString(){
    return String.format("Context: %s\nend: %s",context,end);    
  }
}

谢谢你帮忙!

EN

回答 2

Stack Overflow用户

发布于 2014-03-04 13:20:46

但是反序列化JSON的类是错误的,应该如下所示:

代码语言:javascript
复制
public class MyJson {
    private long numFound;
    private ArrayList<GsonCNItem> edges;

    public ArrayList<GsonCNItem> getEdges(){
        return getEdges();
    }

    public class GsonCNItem{
        private String endLemmas;
        private String context;
        private String end;
        private ArrayList<String> features;
        ...
        private ArrayList<String> text;
        ...

        public ArrayList<String> getFeatures(){
            return features;
        }

        public ArrayList<String> getText(){
            return text;
        }

        public String toString(){
            return String.format("Context: %s\nend: %s",context,end);
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-03-06 13:08:02

将变量List<String>添加到POGO类(GsonCNItem)以解析功能数组。

代码语言:javascript
复制
public class GsonCNItem {
    private String context;
    private String end;

    private List<String> features;

    //Setters and Getters
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22172607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档