2016-10-12 1 views
1

Je suis un newbiew en langage java. Je souhaite obtenir une valeur à partir d'un JsonObject et le convertir en BigDecimal. Je le code suivant:Convertir la valeur de JsonObject en 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")); 

Ce que je veux faire quelque chose de similaire à (BigDecimal)jsonObj.get("productHeight").

Merci.

+0

Que se passe-t-il lorsque vous faites cela? fournir la trace de pile de votre erreur –

Répondre

3

Tout d'abord, jsonObj.get n'est pas une méthode, alors c'est sûrement l'erreur. Deuxièmement, je ne pense pas que lancer un objet sur un BigDecimal fonctionnera comme ça.


Lire la API ...

En descendant de JsonReader à BigDecimal

JsonReader 
    > JsonObject 
     > JsonNumber 
      > BigDecimal 

Vous pouvez faire

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

Cela suppose que productHeight est une valeur numérique, et pas une chaîne, tho Pouah. Si c'est une chaîne, regardez les constructeurs BigDecimal. Spécifiquement celui qui prend une valeur de chaîne.

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