Звучит так, что вы хотели бы проанализировать заданную строку JSON для преобразования значения переменной в String
объект. Вы можете достичь этого, создав 2 класса - SomeCommandOriginal
и SomeCommand
следующим образом:
Сначала преобразуйте строку JSON в SomeCommandOriginal
, чтобы отобразить значение значения переменной в JsonNode
.
class SomeCommandOriginal {
private Long id;
@JsonProperty("variable value")
private JsonNode variableValue;
//general getters and setters
}
class SomeCommand {
private Long id;
private String data;
public SomeCommand(SomeCommandOriginal someCommandOriginal) {
super();
this.id = someCommandOriginal.id;
this.data = someCommandOriginal.variableValue.toString();
}
//general getters and setters
}
Во-вторых, инициализируйте экземпляр SomeCommand
и передайте someCommandOriginal
в качестве аргумента настраиваемого конструктора:
ObjectMapper mapper = new ObjectMapper();
SomeCommandOriginal someCommandOriginal = mapper.readValue(jsonStr, SomeCommandOriginal.class);
SomeCommand someCommand = new SomeCommand(someCommandOriginal);
System.out.println(someCommand.getData());
Вывод на консоль:
{"name": "one", "age": 22, "data": {"key": "value"}}
UPDATED
Если вы используете Gson
, просто измените тип данных variableValue на JsonObject
и переключитесь на аннотацию @SerializedName
следующим образом:
class SomeCommandOriginal {
private Long id;
@SerializedName("variable value")
private JsonObject variableValue;
//general getters and setters
}
И тогда вы можете получить то же самоерезультат также:
Gson gson = new Gson();
SomeCommandOriginal someCommandOriginal = gson.fromJson(jsonStr, SomeCommandOriginal.class);
SomeCommand someCommand = new SomeCommand(someCommandOriginal);
System.out.println(someCommand.getData());