2014-06-09 4 views
0

J'ai une carte liée qui représente les données ci-dessous.Impossible de construire cette structure JSON complexe

{ 

     "Soft Drinks": { 
      "Tin": [ 
       { 
        "Lean Apple": [ 
         { 
          "name": "1 Litre" 
         }, 
         { 
          "name": "2 Litre" 
         } 
        ] 
       }, 
       { 
        "Clear": [ 
         { 
          "name": "7 Litre" 
         }, 
         { 
          "name": "10 Litre" 
         } 
        ] 
       } 
      ], 
      "Bottled": [ 

      ] 
     } 
    } 

Ceci est mon code représentant des données JSON ci-dessus sous forme de code Java

test package

;

import java.util.LinkedHashMap; 
import java.util.LinkedList; 
import java.util.Map; 

import org.json.JSONException; 
import org.json.JSONObject; 

public class Post { 

    public static void main(String args[]) throws JSONException 
    { 
     LinkedList<String> forTinItemsList = new LinkedList<String>(); 
     LinkedList<String> forBottleItemsList = new LinkedList<String>(); 

     JSONObject jsonobj = new JSONObject(); 

     Map<String,LinkedList<String>> categoryitemsMap = new LinkedHashMap<String,LinkedList<String>>(); 

     forTinItemsList.add("Lean Apple"); 
     forTinItemsList.add("Clear"); 


     forBottleItemsList.add("Lemon"); 
     forBottleItemsList.add("Clear"); 



     categoryitemsMap.put("Tin", forTinItemsList); 
     categoryitemsMap.put("Bottled", forBottleItemsList); 

     // completion of Categories. 


     Map<String,LinkedList<String>> subcategory = new LinkedHashMap<String,LinkedList<String>>(); 

     LinkedList<String> forLemonItems = new LinkedList<String>(); 
     forLemonItems.add("1 Litre"); 
     forLemonItems.add("2 Litre"); 

     subcategory.put("Lemon", forLemonItems); 



     LinkedList<String> forClearItems = new LinkedList<String>(); 
     forClearItems.add("7 Litre"); 
     forClearItems.add("10 Litre"); 

     subcategory.put("Clear", forClearItems); 


     for (Map.Entry<String, LinkedList<String>> entry : categoryitemsMap.entrySet()) 
     { 
      String key = entry.getKey(); 

      LinkedList<String> list = entry.getValue(); 

      for(String value : list) 
      { 
       System.out.println(key+"\t"+value); 
      } 

      //jsonobj.put(entry, arg1); 

     } 


    } 

} 

Quelqu'un pourrait me dire comment puis-je construire la structure JSON ci-dessus? J'essayais avec des choses différentes m, mais je n'ai pas réussi, le problème que je faisais face est que je reçois le Bottled Array se remplit également avec les mêmes éléments Tin Array.

+0

votre extrait montre mis en bouteille étant vide – NimChimpsky

+0

pour réduire le code, j'ai intentionnellement maintenu les données Bottled comme vides. – Kiran

+0

il ne correspond pas à votre code java, la strcuture que vous semblez essayer de réaliser en java est différente de celle en json – NimChimpsky

Répondre

0

il y a des bibliothèques qui font cela pour vous GSON et Jackson

+0

Cela semble plus d'un commentaire .. –

+0

J'utilise org.json pour cela. – Kiran

+0

GSON et jackson ont une api plus développée, il est plus simple de les utiliser que de simples olson – NimChimpsky

2

Pour vous donner une idée des choses abomination contre nature deviendrait si vous l'avez fait de cette façon: voici la structure de données que vous devez créer pour capturer le JSON que vous proposez.

Map<String, Map<String, List<Map<String, List<Map<String, String>>>>>> items; 

Alors, ne hésitez pas à mettre en œuvre, mais si elle était moi, je construirais un modèle de données et cartographie puis avec Jackson.

Questions connexes