2016-06-27 25 views
8

Bir java veri işleyicisi için düzgün biçimlendirilmiş JSON gönderirim, ancak Spring'in bir birleşimini, Java'nın gördüklerini nasıl yayınlayacağına karar vermesini ve çerçevelerin gerçekten değişmemesi gerektiğine karar verdim. JSON böylece bir kez görebildiğim için, bir LinkedTreeMap'a dönüştü ve onu bir JsonObject'e dönüştürmem gerekiyor. Bu, JSON'u java nesnelerine serileştirmek/serileştirmek değildir, "son biçim" bir gson JsonObject'tir ve tam olarak geçerli herhangi bir JSON ile başa çıkabilmesi gerekir.LinkedTreeMap'i gson'a nasıl dönüştürebilirim JsonObject

{ 
"key":"value", 
"object": { 
    "array":[ 
     "value1", 
     "please work" 
     ] 
    } 
} 

size "=" ile değiştirebilirsiniz

{key=value, object={array=[value1, please work]}} 

bir LinkedTreeMap .ToString() ler, ben bunu görünce, kullanıyorum örnektir ":", Ancak bu,

new JsonParser().parse(gson.toJson(STRING)).getAsJsonObject() 
stratejisi için dahili tırnak işareti içermiyor.

LinkedTreeMap'i JsonObject'e dönüştürmek için daha doğrudan bir yol var mı, yoksa dahili tırnakları dizeye eklemek için bir kitaplık mı yoksa bir iç bileği, iç tırnaklara gerek duymayan bir JsonObject'e dönüştürmenin bir yolu mu var?

+0

Muhtemelen ilgili bir JsonObject doğrudan JSON serisini ise: http://stackoverflow.com/questions/22285661/gson-json-and- -text-of-subtleties-of-of- – Nivas

+0

Ben anlamıyorum. Bir "String" mi arıyorsun? Sonra '' LinkedTreeMap' içinde geçerek '' json'' için. –

+0

JsonObject'i kancaya veya crook'a alıyorum, doğrudan LinkedTreeMap'ten JsonObject'e gitmenin herhangi bir yolunu bulamadım, JsonObject'e dönüştürülmüş bir dizeyi almanın doğru bir yolu olduğundan, String manipülasyonuna bakmaya başladım . – Bronanaza

cevap

24

Genellikle nesneyi JSON'a serileştirmeniz ve ardından bu JSON'u JsonObject'a geri göndermeniz gerekir. Neyse ki, Gson, ayrıştırma işlemini atlayan türden bir toJsonTree yöntemi sağlar.

LinkedTreeMap<?,?> yourMap = ...; 
JsonObject jsonObject = gson.toJsonTree(yourMap).getAsJsonObject(); 

Not

, bu sen sadece

gson.fromJson(theJson, JsonObject.class); 
İlgili konular