2011-01-27 11 views
5

मेरे पास कुछ फ़ील्ड में एक संरचित जेसन म्यूटेबल होने के लिए है, मैं जीसन गूगल जेसन एपीआई का उपयोग कर जावा में इसे सही तरीके से पार्स (deserialize) कैसे कर सकता हूं?मैं अपने जेसन में कुछ गतिशील क्षेत्रों को पार्स करने के लिए Google जेसन पार्सिंग एपीआई (जीसन) का उपयोग कैसे करूं?

Json उदाहरण:

{ 
type: 'sometype', 
fields: { 
    'dynamic-field-1':[{value: '', type: ''},...], 
    'dynamic-field-2':[{value: '', type: ''},...], 
... 
} 

गतिशील क्षेत्रों संरचना भेजा के आधार पर अपने नाम बदल जाएगा।

क्या कोई तरीका है?

उत्तर

8

आप कस्टम उपयोग कर सकते हैं (डी) क्रमबद्धता राफ लेविन पता चलता है के रूप में, हालांकि, Gson देशी रूप नक्शे को समझता है।

आप इस चलाते हैं तो आप उत्पादन { 'ए': 'बी'} मिल जाएगा

Map<String, String> map = new HashMap<String, String>(); 
map.put("A", "B"); 
System.out.println(new Gson().toJson(src)); 

नक्शा अब अपनी गतिशील कुंजी हो सकते हैं। जेसन को फिर से पढ़ने के लिए आपको टाइपसन के माध्यम से टाइप जानकारी के बारे में जीसन को बताने की ज़रूरत है, जो कि जीसन के रनटाइम प्रकार की जानकारी रिकॉर्ड करने का तरीका है जो जावा मिटा देता है।

Map fromJson = 
    new Gson().fromJson(
     "{\"A\":\"B\"}", 
     new TypeToken<HashMap<String, String>>() {}.getType()); 
System.out.println(fromJson.get("A")); 

मुझे उम्मीद है कि इससे मदद मिलती है। :)

+0

धन्यवाद, यह एक आसान तरीका है :) –

3

google-gson का उपयोग करते हुए मैं इसे इस तरह से कार्य करें:

JsonElement root = new JsonParser().parse(jsonString); 

और फिर आप json के साथ काम कर सकते हैं। उदाहरण:

String value = root.getAsJsonObject().get("type").getAsString(); 
संबंधित मुद्दे