2017-09-28 60 views
0
[ 
    { 
    "sentence": "I want to buy shoes .", 
    "tree": { 
     "ROOT": [ 
     { 
      "index": 2, 
      "token": "want", 
      "label": "VERB", 
      "pos": "VBP", 
      "tree": { 
      "nsubj": [ 
       { 
       "index": 1, 
       "token": "I", 
       "label": "PRON", 
       "pos": "PRP" 
       } 
      ], 
      "xcomp": [ 
       { 
       "index": 4, 
       "token": "buy", 
       "label": "VERB", 
       "pos": "VB", 
       "tree": { 
        "aux": [ 
        { 
         "index": 3, 
         "token": "to", 
         "label": "PRT", 
         "pos": "TO" 
        } 
        ], 
        "dobj": [ 
        { 
         "index": 5, 
         "token": "shoes", 
         "label": "NOUN", 
         "pos": "NNS" 
        } 
        ] 
       } 
       } 
      ], 
      "punct": [ 
       { 
       "index": 6, 
       "token": ".", 
       "label": ".", 
       "pos": "." 
       } 
      ] 
      } 
     } 
     ] 
    } 
    } 
] 

这是用Json表示的树。但嵌套节点的密钥不断变化。
例如“ROOT,nsubj,xcomp”等。
如何使用gson将上述json代码转换为Java对象。如何使用gson将树结构化的json转换为Java对象

以上响应来自syntaxnet Parsey_Mcparseface api我正在尝试使用。
在此先感谢。

+0

FYI https://stackoverflow.com/questions/1957406/generate-java-class-from-json – hiropon

+0

的可能的复制[生成JSON Java类?(https://开头stackoverflow.com/questions/1957406/generate-java-class-from-json) –

+0

使用像http://www.jsonschema2pojo.org/这样的工具在这种情况下不起作用。因为它会为nsubj,xcomp,aux等创建类以拥有自己的类。 可以有这么多的这些链接。 我的目标是从上面的JSON创建树数据结构。 – amadamala

回答

0

Gson有一个方法Gson#fromJson。例如,这是一个读取简单字符串对象的代码。

Gson gson = new Gson(); 
    String str = gson.fromJson("\"hello\"", String.class); 
    System.out.println("String: " + str); 

您需要准备Java对象来阅读您提出的JSON。但是,你不需要自己编写代码。有一个网站提供自动JSON对象生成器。

jsonschema2pojo

输入以下内容:

  • 目标语言:Java的
  • 源类型:JSON
  • Annotation类型:GSON

,并输入你的类名,例如“ParsedSentence”

然后,编写代码。你会得到对象。

Gson gson = new Gson(); 
    ParsedSentence parsed = gson.fromJson(longLongJsonString, ParsedSentence.class); 

jsonschema2pojo screenshot

+0

我已经尝试使用此路线。但是这是问题所在。它为xcomp,aux,punct,dobj等创建类。将会有很多这些键。为每一个类创建一个类是不现实的。我希望有一个解决方案将其解析到Java对象树中。 – amadamala