Преобразование значения из JSONObject в BigDecimal

#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"))