2016-10-12 6 views
1

Я новичок в языке Java. Я хочу получить значение от JsonObject и конвертировать его в BigDecimal. У меня есть следующий код:Преобразование значения из 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").

спасибо.

+0

Что происходит, когда вы это делаете? предоставить трассировку стека вашей ошибки –

ответ

3

Во-первых, jsonObj.get не метод, поэтому, конечно, это ошибка.

Во-вторых, я не думаю, что любое действие на объект BigDecimal будет работать так.


Чтение API ...

Спускаясь от JsonReader к BigDecimal

JsonReader 
    > JsonObject 
     > JsonNumber 
      > BigDecimal 

Вы можете сделать

jsonObj.getJsonNumber("productHeight").bigDecimalValue() 

Это предполагает, что productHeight это числовое значение, и не строка, а тьфу.

Если это строка, посмотрите на конструкторы BigDecimal. В частности, тот, который принимает значение String.

new BigDecimal(jsonObj.getString("productHeight"))