2013-01-16 17 views
14

मेरी वर्तमान परियोजना में मैं एंड्रॉइड में जीएसओएन लाइब्रेरी का उपयोग करता हूं, और मुझे नेस्टेड मैप्स deserializtion की समस्या का सामना करना पड़ा है। यह कैसे प्रारंभिक jsonGoogle GSON ने हैशमैप्स deserialization घोंसला

{ 

"5":{ 
    "id":5, 
    "name":"initial name", 
    "image_url":"uploads/71d44b5247cc1a7c56e62fa51ca91d9b.png", 
    "status":"1", 
    "flowers":{ 
     "7":{ 
      "id":7, 
      "category_id":"5", 
      "name":"test", 
      "description":"some description", 
      "price":"1000", 
      "image_url":"uploads/test.png", 
      "status":"1", 
      "color":"red", 

     } 
    } 
    } 
} 

तरह लग रहा है और मेरे POJO के

class Category { 
long id; 
String name; 
String image_url; 
HashMap<String,Flower> flowers; 
} 

और फूल वर्ग

class Flower { 
long id; 
String category_id; 
String name; 
String description; 
String price; 
String image_url; 
String status; 
} 

लेकिन जब मैं इस वस्तुओं deserialize करने की कोशिश, मैं नेस्टेड HashMaps का उपयोग कर सकते है, उदाहरण कोड

public class TestJson { 
public static void main(String[] args) { 
    Gson gson = new Gson(); 
    try { 
    BufferedReader br = new BufferedReader(
     new FileReader("2.txt")); 
    HashMap<String,Category> map = gson.fromJson(br, HashMap.class); 
    Collection<Category> asd = map.values(); 
      System.out.println(map.values()); 

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

    } 
} 

कोई सुझाव?

उत्तर

28

यह gson.fromJson(br, HashMap.class); जीसन को बताता है कि आप अज्ञात मान प्रकार के मानचित्र को deserialize करना चाहते हैं। आपको Map<String,Category>.class जैसे कुछ निर्दिष्ट करने का लुत्फ उठाया जाएगा, लेकिन आप इसे जावा में नहीं कर सकते हैं, इसलिए समाधान का उपयोग उन चीज़ों का उपयोग करना है जिन्हें उन्होंने गॉसन में टाइपटोकन कहा था।

Map<String, Category> categoryMap = gson.fromJson(br, new TypeToken<Map<String, Category>>(){}.getType()); 
+0

हां, मैं अपने कोड में टाइपटोकन्स को याद कर चुका हूं, ठीक करने के बाद सभी काम पूरी तरह से काम करते हैं। धन्यवाद –

+0

धन्यवाद .. यह वही है जो मैं पिछले अर्ध-घंटे के बाद से ढूंढ रहा हूं :) – Arjun

संबंधित मुद्दे