2016-06-27 2 views
8

Для обработчика данных java я отправляю правильно отформатированный JSON, но комбинация Spring, Java, решающая, как отличить то, что она видит, и фреймворки, которые я действительно не должен менять, JSON, так что, как только я это увижу, он превратился в LinkedTreeMap, и мне нужно преобразовать его в JsonObject. Это не сериализовать/де-сериализовать JSON в java-объекты, а «final form» - это gson JsonObject, и он должен иметь возможность обрабатывать буквально любой действительный JSON.Как преобразовать LinkedTreeMap в gson JsonObject

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

является образцом я использую, когда я вижу его, это LinkedTreeMap что .ToString() s в

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

, где вы можете заменить "=" с ":", но у которого нет внутренних котировок для

new JsonParser().parse(gson.toJson(STRING)).getAsJsonObject() 

стратегия.

Есть ли более прямой способ конвертировать LinkedTreeMap в JsonObject или библиотеку, чтобы добавить внутренние кавычки в строку или даже способ превратить жало в JsonObject, который не нуждается во внутренних кавычках?

+0

Возможно, связанных с: http://stackoverflow.com/questions/22285661/gson-json-and- the-subtleties-of-linkedtreemap – Nivas

+0

Я не понимаю. Вы хотите получить «String»? Затем просто 'toJson' переходит в' LinkedTreeMap'. –

+0

Я ищу, чтобы получить JsonObject по крюку или crook, не найдя никакого способа перейти непосредственно из LinkedTreeMap в JsonObject, я начал смотреть на манипуляции с String, так как есть правильный способ получить строку, преобразованную в JsonObject , – Bronanaza

ответ

24

Вам, как правило, придется сериализовать объект в JSON, а затем проанализировать этот JSON обратно в JsonObject. К счастью, Gson предоставляет метод toJsonTree, который пропускает разбор.

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

Обратите внимание, что, если вы можете, просто десериализации JSON непосредственно к JsonObject с

gson.fromJson(theJson, JsonObject.class); 
Смежные вопросы