2011-01-27 12 views
5

Bazı alanlarda değiştirilebilen yapılandırılmış bir Json'um var, Gson google json api kullanarak Java'da nasıl doğru şekilde ayrıştırabilirim (deserialize edebilirim)?Jsonumdaki bazı dinamik alanları ayrıştırmak için Google Json Ayrıştırma API'sını (Gson) nasıl kullanırım?

Json örnek:

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

dinamik alanlar gönderilen yapısına bağlı olarak adını değiştirecek.

Bir yolu var mı?

cevap

8

Sen özel kullanabilirsiniz (de) serileştirme Ancak GSON doğal haritalar anlar.

Bunu çalıştırırsanız çıktı { "A": "B"} alacak

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

haritası Artık dinamik şifreler içerebilir. Json'u tekrar okumak için, Gson'a Java'nın sildiği çalışma zamanı türü bilgisini kaydetme biçimi olan bir TypeToken aracılığıyla tip bilgisi hakkında Gson'a söylemeniz gerekir.

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

Umarım bu yardımcı olur. :)

+0

Teşekkürler, bu daha kolay bir yoldur :) –

3

Ben bu şekilde yapmak google-gson kullanma:

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

ve sonra json ile çalışabilirsiniz. e.g .:

String value = root.getAsJsonObject().get("type").getAsString(); 
İlgili konular