#java #json #jsonreader
#java #json #jsonreader
Вопрос:
Я новичок в языке Java. Я хочу получить значение из a JsonObject
и преобразовать его в BigDecimal
. У меня есть следующий код:
JsonReader jsonReader;
try {
jsonReader = Json.createReader(httpRequest.getReader());
} catch (IOException e) {
return Response.serverError().entity("Problem reading json body").build();
}
JsonObject jsonObj = jsonReader.readObject();
Map<String, Object> paramMap = UtilMisc.toMap("productId", productId, "internalName",
jsonObj.getString("internalName"), "productName", jsonObj.getString("productName"), "productTypeId",
jsonObj.getString("productTypeId"), "login.username", username, "login.password", password,
"description", jsonObj.getString("description"), "longDescription", jsonObj.getString("longDescription"),
"productHeight", (BigDecimal)jsonObj.get("productHeight"));
Я хочу сделать что-то похожее на (BigDecimal)jsonObj.get("productHeight")
.
Спасибо.
Комментарии:
1. Что происходит, когда вы это делаете? предоставьте трассировку стека вашей ошибки
Ответ №1:
Во-первых, jsonObj.get
это не метод, так что, конечно, это ошибка.
Во-вторых, я не думаю, что приведение любого объекта к a BigDecimal
будет работать таким образом.
Чтение API…
Переход от JsonReader
к BigDecimal
JsonReader
> JsonObject
> JsonNumber
> BigDecimal
Вы можете сделать
jsonObj.getJsonNumber("productHeight").bigDecimalValue()
Предполагается, что productHeight
это числовое значение, а не строка.
Если это строка, посмотрите на BigDecimal
конструкторы. В частности, тот, который принимает строковое значение.
new BigDecimal(jsonObj.getString("productHeight"))