2017-09-28 87 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