2017-07-18 124 views
0

我是一名初學者,我需要從JSON中進行排序以便稍後進行分析。 我需要知道JSON字段以及它是否有數組或子類別。 我要地圖JSON輸入,例如:如何映射JSON(自定義)

{ 
    "car":"Audi", 
    "model":"2010", 
    "price":"30000", 
    "colors":[ 
     "Grey", 
     "White", 
     "Black" 
    ], 
    "otro":{ 
     "a":1, 
     "b":2, 
     "c":[ 
     { 
      "c11":"c11", 
      "c12":"c12" 
     }, 
     { 
      "c21":"c21", 
      "c22":"c22" 
     } 
     ] 
    } 
} 

等待作爲輸出映射:

car 
model 
price 
colors[] 
otro.a 
otro.b 
otro.c[].c11 
otro.c[].c12 
otro.c[].c21 
otro.c[].c22 

這是我的代碼:

public static void main(String[] args) { 

    try { 

     ObjectMapper mapper = new ObjectMapper(); 
     String json = "{\"car\":\"Audi\",\"model\":\"2010\",\"price\":\"30000\",\"colors\":[\"Grey\",\"White\",\"Black\"],\"otro\":{\"a\":1,\"b\":2,\"c\":[{\"c11\":\"c11\", \"c12\":\"c12\"},{\"c21\":\"c21\", \"c22\":\"c22\"}]}}"; 

     Map<String, Object> map = new HashMap<String, Object>(); 

     // convert JSON string to Map 
     map = mapper.readValue(json, new TypeReference<Map<String, Object>>() { 
     }); 

     for (Map.Entry<String, Object> entry : map.entrySet()) { 
      System.out.println(entry.getKey() + " - " + entry.getValue().getClass()); 
      if (entry.getValue() instanceof List) { 
       for (Object object : ((List)entry.getValue())) { 
        System.out.println("\t-- " + object.getClass()); 
       } 
      } 

     } 

    } catch (JsonGenerationException e) { 
     e.printStackTrace(); 
    } catch (JsonMappingException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

回答

相關問題