J'ai un JSON qui ressemble à ceci:Comment désérialiser un JSON avec un entier comme clé?
{
"MeterRates": {
"0": 0.142,
"1024": 0.142,
"51200": 0.142,
"512000": 0.142,
"1024000": 0.1278,
"5120000": 0.1051
}
}
Ce JSON est en fait une partie d'un fichier JSON plus, je ne la partie extrait que j'avais désérialisation difficulté. J'ai besoin de désérialiser cela dans un objet Java. J'ai essayé de le faire en utilisant la classe suivante, mais cela me donne des valeurs null
pour toutes les clés.
public class MeterRates {
private Double rate0;
private Double rate1024;
private Double rate51200;
private Double rate512000;
private Double rate1024000;
private Double rate5120000;
@JsonProperty("0")
public Double getRate0() {
return rate0;
}
public void setRate0(Double rate0) {
this.rate0 = rate0;
}
@JsonProperty("1024")
public Double getRate1024() {
return rate1024;
}
public void setRate1024(Double rate1024) {
this.rate1024 = rate1024;
}
@JsonProperty("51200")
public Double getRate51200() {
return rate51200;
}
public void setRate51200(Double rate51200) {
this.rate51200 = rate51200;
}
@JsonProperty("512000")
public Double getRate512000() {
return rate512000;
}
public void setRate512000(Double rate512000) {
this.rate512000 = rate512000;
}
@JsonProperty("1024000")
public Double getRate1024000() {
return rate1024000;
}
public void setRate1024000(Double rate1024000) {
this.rate1024000 = rate1024000;
}
@JsonProperty("5120000")
public Double getRate5120000() {
return rate5120000;
}
public void setRate5120000(Double rate5120000) {
this.rate5120000 = rate5120000;
}
@Override
public String toString() {
return "MeterRates [0 = " + rate0 + " 1024 = " + rate1024 + " 51200 = " + rate51200 + " 512000 = " + rate512000 + " 1024000 = " + rate1024000
+ " 5120000 = " + rate5120000 + "]";
}
}
J'ai essayé référence à this question qui a des exigences similaires, mais ne pouvait pas tout à fait obtenir la façon de le faire.
MISE À JOUR 1:
Le code que je utilise désérialiser est la suivante, où je passe la classe comme MeterRates.class
:
public static <T> T unmarshalJSON(HttpEntity entity, Class<T> clazz) {
InputStream is = null;
try {
return new Gson().fromJson(EntityUtils.toString(entity), clazz);
} catch (ParseException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if (null != is) {
is.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
Postez votre code. Et respectez les conventions de nommage Java: les variables commencent par une lettre minuscule. –
Aussi, pourquoi utilisez-vous String, puisque les valeurs sont des nombres? Pourquoi ne pas utiliser Double à la place? –
@JBNizet: Désolé pour le nom de la variable goof-up, changé cela et ajouté le code que j'utilise pour désérialiser. – jobin