2016-06-27 8 views
8

Dla procedury obsługi danych java wysyłam poprawnie sformatowany JSON, ale połączenie Spring, Java decydujące jak rzutować to, co widzi, i frameworks Naprawdę nie powinienem zmieniać modyfikacji JSON, tak, że gdy go zobaczę, zmieni się w LinkedTreeMap i muszę go przekształcić w JsonObject. To nie jest serializacja/dekonfiguracja JSON-a na obiekty java, jego "ostateczną formą" jest JsonObject, i musi być w stanie obsłużyć dosłownie dowolny poprawny JSON.Jak przekonwertować LinkedTreeMap na gson JsonObject

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

jest próbka używam, gdy widzę, że to LinkedTreeMap że .ToString() s do

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

gdzie można wymienić "=" z ":", ale to nie ma wewnętrznych cytatów dla strategii .

Czy istnieje bardziej bezpośredni sposób przekonwertowania LinkedTreeMap do JsonObject lub biblioteki w celu dodania wewnętrznych cudzysłowów do łańcucha, czy nawet sposobu przekształcenia żądła w obiekt JsonObject, który nie wymaga wewnętrznych cytatów?

+0

prawdopodobnie związane: http://stackoverflow.com/questions/22285661/gson-json-and- subtelności-połączonej-subskrybowanej – Nivas

+0

Nie rozumiem. Czy chcesz uzyskać "String"? Następnie po prostu 'toJson' przechodzi w' LinkedTreeMap'. –

+0

Szukam, aby uzyskać JsonObject przez hak lub przez oszust, nie znalazłem żadnego sposobu, aby przejść bezpośrednio z LinkedTreeMap do JsonObject, zacząłem patrzeć na manipulację String, ponieważ istnieje odpowiedni sposób, aby uzyskać ciąg przekonwertowany do JsonObject . – Bronanaza

Odpowiedz

24

Zazwyczaj trzeba serializować obiekt do JSON, a następnie przeanalizować JSON z powrotem do JsonObject. Na szczęście metoda Gson zapewnia metodę, która pomija parsowanie.

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

zauważyć, że jeśli można tylko deserializować JSON bezpośrednio do JsonObject z

gson.fromJson(theJson, JsonObject.class);