2016-09-06 9 views
0

私は、ほんの奇妙なJSONペイロードをデシリアライズする必要がありますが、JavaとGsonを使用して行う方法についてはわかりません。コードが示すように、我々は個々のオブジェクト(すなわち、「赤」と「オレンジ」)をデシリアライズするためにHashMapを使用することができますが、私たちが抱えている問題は、親オブジェクトを説明するためにしようとしている、名前を持たないJSONオブジェクトを逆シリアル化する

{ 
    "Red": { 
      "Level 1": "Specify Action", 
      "Level 2": "Action Taken", 
      "Level 3": "No Action Taken" 
    }, 
    "Orange": { 
      "Level 4": "Defeat Gannon", 
      "Level 5": "Save Princess", 
      "Level 6": "Find Triforce" 
    } 
} 

簡単にフックする名前はありません。

+0

変数名がない場合、このペイロードをHashMap関数でどうやって渡していますか? – petryuno1

+0

申し訳ありませんが、わかりませんでした。私はHashMapを使って "赤"と "オレンジ"のオブジェクトを表現することができたと考えましたが、あなたが指摘したように、親オブジェクトを参照する方法がわからないので全体のペイロードを渡すことができません。 – killQuotes

+0

親オブジェクトはどういう意味ですか? –

答えて

0

あなたのJSONは以下のようになっていることを考慮すると:

{ 
    "Red": { 
     "Level 1": "Specify Action", 
     "Level 2": "Action Taken", 
     "Level 3": "No Action Taken" 
    }, 
    "Orange": { 
     "Level 4": "Defeat Gannon", 
     "Level 5": "Save Princess", 
     "Level 6": "Find Triforce" 
    } 
} 

私はHashMapの、ジャクソンのAPIと、以下のようなものを使用します。私は同様のGSONを使用して同様に行うことができると思います。

import com.fasterxml.jackson.core.type.TypeReference; 
import com.fasterxml.jackson.databind.ObjectMapper; 

     import java.io.IOException; 
     import java.util.HashMap; 
     import java.util.Map; 

     public class Test { 

      public static void main(String[] args) throws IOException { 

       ObjectMapper mapper = new ObjectMapper(); 
       String jsonInString = "{\n" + 
         " \"Red\": {\n" + 
         "  \"Level 1\": \"Specify Action\",\n" + 
         "  \"Level 2\": \"Action Taken\",\n" + 
         "  \"Level 3\": \"No Action Taken\"\n" + 
         " },\n" + 
         " \"Orange\": {\n" + 
         "  \"Level 4\": \"Defeat Gannon\",\n" + 
         "  \"Level 5\": \"Save Princess\",\n" + 
         "  \"Level 6\": \"Find Triforce\"\n" + 
         " }\n" + 
         "}"; 

       TypeReference< Map<String, HashMap<String, String>>> typeRef 
         = new TypeReference<Map<String, HashMap<String, String>>>() { 
       }; 

       Map<String, HashMap<String, String>> value = mapper.readValue(jsonInString, typeRef); 

       System.out.println(value); 

      } 
     } 
関連する問題