#java #jackson #fasterxml #javax.json
#java #джексон #fasterxml #javax.json
Вопрос:
Я пытаюсь преобразовать объект JAVA POJO с помощью JSONObject в строку следующим образом:
class MyPojo {
public MyPojo(String sName, JsonObject obj)
{
this.sName = sName;
this.tJsonObj = obj;
}
public String sName;
public javax.json.JsonObject tJsonObj;
};
javax.json.JsonObject jsonObj = JsonUtils.toJsonObject("{"key": 123}");
ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper.ObjectMapper();
JsonNode node = mapper.valueToTree(new MyPojo("myname", jsonObj));
String jsonStr = node.toString();
Я получаю значение jsonStr как:
{"sName":"myname","tJsonObj":{"key":{"integral":true,"valueType":"NUMBER"}}}
Как я могу получить значение jsonStr как:
{"sName":"myname","tJsonObj":{"key":123}}
JsonUtils.toJsonObject — это мой собственный служебный метод для получения JSONObject из строки.
Комментарии:
1. Их несколько
JsonObject
, вы не указали, какой именно. Будет лучше использовать fasterxmlObjectNode
вместо того, чтоJsonObject
вы используете2. Это
javax.json.JsonObject
, я не могу изменить класс POJO.3. Если вы уверены в своих JsonUtils. Для JSONObject тогда не используйте com.fasterxml.jackson.databind. ObjectMapper
4. извините, я вас не понял. Моя проблема проста — получить строку json из объекта JAVA POJO, который может иметь javax.json. JSONObject как переменная-член. Если не использовать com.fasterxml.jackson.databind. ObjectMapper, тогда что еще. Я не хочу, чтобы моя собственная реализация toString() была в стороне от моего JAVA POJO.