2017-05-01 13 views
-1

imはjavaで次のjsonを読み取ろうとしています。Javaでネストされたjsonオブジェクトの値を読み取る方法

{ 
"guiCarport": { 
    "width": 500, 
    "depth": 500, 
    "height": 230 
}, 
"guiRoof": { 
    "gableRoof": false, 
    "overhang": { 
     "sides": 20, 
     "front": 20, 
     "back": 20 
    } 
}, 
"guiShed": { 
    "shed": false, 
    "depth": 300, 
    "doorPlacement": 0, 
    "side": "Foran", 
    "rotateDoor": false 
} 
} 

これまでのところ、私のJavaコードは、Javaサーブレットでは、次のようになります。

String json = (String) request.getParameter("json"); 

    Gson gson = new Gson(); 
    JsonObject obj = gson.fromJson(json, JsonObject.class); 

    JsonElement base = obj.get("guiCarport"); 
    JsonElement roof = obj.get("guiRoof"); 
    JsonElement shed = obj.get("guiShed"); 

私はオブジェクトの値を読み込み、変数に割り当てるための最も簡単な方法は何ですか?私は別のオブジェクト用に作成されたカスタムクラスを持っていますが、まず値を取得する方法が必要です。 ありがとう!

+0

「JsonObject」に変換するのではなく、すぐにカスタムクラスに変換できないのはなぜですか? – Shadov

+0

私はどうやってそれをやりますか? – KasperOnFire

+0

あなたのjsonをこのサイトhttp://www.jsonschema2pojo.orgに置き、 'Gson'を選択してzipをクリックすると、jsonからJavaクラスが生成されます。そして 'gson.fromJson(json、Example.class)'(または生成された 'Example.java'の名前を変更したい場合は他のもの)を使用してください.Jsonはそれらのオブジェクトに変換されます。 – Shadov

答えて

-1

jsonデータを最初にHashMapに変換できます。あなたは"guiCarport", "guiRoof""guiShed"のためのカスタムクラスを持っている場合は、この方法は、あなたが値

Type type = new TypeToken<Map<String, String>>(){}.getType(); 
    Map<String, String> myMap = gson.fromJson(jsonData, type); 
-1

を取得します。そして、あなたは、あなたがゲッターと個々のオブジェクトと順番にそれらの値を取得することができます

ResponseHolder holder = gson.fromJson(jsonData, ResponseHolder.class);

としてオブジェクトにdireclty応答をpasreできる今

class ResponseHolder { 
    private GuiCarportType guiCarport; 
    private GuiRoofType guiRoof; 
    private GuiShedType guiShed; 

    //Getters and setters 
} 

下図のようなデータホルダーを作成してください。

関連する問題