2016-03-25 14 views
2

Sadece marcharlling (Object ->JSON) için Jettison ve unshashalling (JSON ->Object) için GSON kullanan bir ortamda (Java) çalışmaya başladım.Dış nesne sarıcısını dışlamak için Jettison JSON biçimini nasıl değiştiririm?

Jettison marshaller ile oluşturulmuş JSON nesnelerini unshashalling sorunları yaşıyorum. Ben GSON, hem prop1 ve prop2 boş değerlere sahip olan un-Mareşal bunu denediğinizde sınıf X bir nesne için, jettison üretilen dize

{"X":{"prop1":"value1", "prop2":"value2"}} 

olduğunu fark ettik.

üretilen JSON dizesi jettison biçimini güvenen değil, I dış JSON ambalaj malzemesi olmadan dize

{"prop1":"value1", "prop2":"value2"} 

serisini çalıştı ve GSON doğru tedavi.

Jettison, dış sarmalayıcı takılı olmadan JSON üretmek için bir yol var mı? Ya da Jettison ve GSON'un birlikte çalışması için bir yol var mı?

cevap

0

Jettison'a çok aşina değilim, ama bunun GSON ile halledilebileceğini düşünüyorum. Her şeyden

İlk olarak, elemanların bir ağaca JSON okumak için GSON en JsonParser kullanabilirsiniz:

String json = "{\"X\":{\"prop1\":\"value1\", \"prop2\":\"value2\"}}"; 
JsonParser parser = new JsonParser(); 
JsonElement element = parser.parse(json); 
JsonObject object = element.getAsJsonObject(); 

Şimdi bu nesnenin "X" özelliğinin değerini ayıklamak istiyorum. Biz özelliğin adını biliyorsanız, biz sadece kullanabilirsiniz:

JsonElement value = object.get("X"); 

Ancak sorudan o değişebilir bu özelliğin adı gibi görünüyordu. Bu durumda, böyle örneğin, dinamik birinci özelliği almak gerekir:

Gson gson = new Gson(); 
X x = gson.fromJson(value, X.class); 
System.out.println(x.prop1); // prints value1 
System.out.println(x.prop2); // prints value2 
+0

: Biz bu değeri belirledikten sonra

Set<Map.Entry<String, JsonElement>> entrySet = object.entrySet(); Map.Entry<String, JsonElement> firstEntry = entrySet.iterator().next(); JsonElement value = firstEntry.getValue(); 

, biz her zamanki gibi bizim sınıfının bir örneğine serisini GSON'u kullanıma sunan öneri için teşekkür ederiz. Bu, Jettison'ın jsonu değiştirmek için herhangi bir yol sunmazsa, bu muhtemelen son bulabileceğimiz yol olacaktır. – piper1970

+0

Yardım için mutluyum. Cevabımı faydalı bulduysanız, lütfen kabul edildi olarak işaretleyin. – andersschuller

+0

Bu soruna çözüm buldunuz mu? Ben aynı şekilde koşuyorum ve bana yardım edip edemeyeceğinizi merak ediyorum. –

İlgili konular