Привет всем, я устанавливаю значение для объекта, а затем запускаю gson.tojson(myObject)

Это нормально работает, и результат выглядит так:

{"val1":22,"val2":4,"val3":34,"val4":1046.0,"val5":"hello","val6":true}

Однако теперь мне нужно, чтобы моя строка json выглядела как

{"myJson":  {"val1":22,"val2":4,"val3":34,"val4":1046.0,"val5":"hello","val6":true}}

Есть ли встроенный способ сделать это, или я должен просто выполнить sting concat?

2
Doc Holiday 21 Окт 2015 в 16:51

3 ответа

Лучший ответ

Да, вам просто нужно получить JsonTree и добавить к нему внутренний объект

JsonElement innerObject = gson.toJsonTree(myObject);
JsonObject outerObject = new JsonObject();
outerObject.add("myJson",innerObject);

Теперь в outerObject есть innerObject, так что вы можете взять его оттуда, преобразовать в String, если хотите.

String json = outerObject.toString();
5
Sleiman Jneidi 21 Окт 2015 в 14:28

Вы можете создать класс-оболочку, у которого ваш объект установлен в свойстве myJson.

public class Wrapper {
  <Yourclass> myJson;

  public Wrapper(<Yourclass> obj){
    myJson = obj;
  }
}

После этого создайте JSON на основе Wrapper.

0
Nitek 21 Окт 2015 в 13:56

Я не знаю, есть ли для этого возможность с Gson, но вы можете создать класс-оболочку для своего объекта:

class ObjectWrapper {
    Object myJsonObject;
}

И используйте gson.toJson() на обернутом объекте.

0
Gaël J 21 Окт 2015 в 13:55