GSON: Как преобразовать объект (который сам содержит JSON) в JSON

1

У меня другой вариант использования, когда поля в POJO сами хранят данные JSON, в основном группируя все данные.

Теперь я хочу, чтобы полный JSON генерировался поверх POJO.

В настоящее время я использую этот метод

private static Gson gson = new Gson();
public static String convertObjectToJSON(Object object) throws Exception {
    String jsonResponse = gson.toJson(object);
    return jsonResponse;
}

Но получение вывода с escape-символами вокруг двойных кавычек, как показано ниже

 { \"_id\" : 234242, \"name\" : \"carlos\"}

Я пробовал различные варианты в GsonBuilder, но не работал. В принципе, я просто группирую несколько данных JSON и отправляю их.

Могли бы вы, пожалуйста, сделать необходимую помощь, чтобы избавиться от символов побега вокруг двойных кавычек.

ОБНОВИТЬ:

Вопрос в том, что у меня есть 3 JSON и вам нужно объединить их в один JSON и передать его клиенту html5 через Spring MVC. На данный момент я добавил 3 JSON в POJO и попытался преобразовать их в JSON. То же самое объясняется выше.

С уважением

Venkat

Теги:
gson

1 ответ

0

Я попробовал ниже пример кода, и у него нет никаких escape-символов вокруг двойных кавычек.

class MyPOJO{
    private int _id;
    private String name;
    // getter & setter
}

String json="{ \"_id\" : 234242, \"name\" : \"carlos\"}";
MyPOJOobj=new Gson().fromJson(json, MyPOJO.class);
System.out.println(new Gson().toJson(obj));

вывод:

{"_id":234242,"name":"carlos"}

РЕДАКТИРОВАТЬ

Если вы хотите объединить 3 строки JSON, то она будет сохранена как Список объектов, как показано ниже:

образец кода:

String json = "[" +
                    " { \"_id\" : 1, \"name\" : \"A\"}," +
                    " { \"_id\" : 2, \"name\" : \"B\"}," +
                    " { \"_id\" : 3, \"name\" : \"C\"}" +
                "]";
Type type = new TypeToken<ArrayList<MyPOJO>>() {}.getType();
ArrayList<MyPOJO> obj = new Gson().fromJson(json, type);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(obj));

вывод:

[
  {
    "_id": 1,
    "name": "A"
  },
  {
    "_id": 2,
    "name": "B"
  },
  {
    "_id": 3,
    "name": "C"
  }
]
  • 0
    Спасибо, Braj. Приведенное выше решение добавляет десятичные дроби к int, что вызовет проблемы для моего кода. И еще мой вопрос: у меня есть 3 строки json, теперь я хочу подготовить json с комбинацией из трех json. Tnitial 3 JSON'ы правильные, у них нет escape-символов.
  • 0
    десятичное число будет удалено соответствующим классом POJO вместо Object
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню