Ne peut pas désérialiser instance de START_OBJECT jeton
Mon Json ressemble à quelque chose comme (et ses inmodifiable)
{
....
"Sale": [
"SaleLines": {
"SaleLine": [
{
"Item": {
"Prices": {
"ItemPrice": [
{
"amount": "100",
"useType": "Default"
},
{
"amount": "100",
"useType": "MSRP"
}
]
},
}
......
......
}
]
"calcDiscount": "0",
"calcSubtotal": "500",
}
]
}
Le POJO java code ressemble à
public static class SaleLines {
@JsonProperty("SaleLine")
private SaleLineObject[] saleLineObject;
public SaleLineObject[] getSaleLineObject() { return saleLineObject; }
public void setSaleLineObject(SaleLineObject[] saleLineObject) { this.saleLineObject = saleLineObject; }
}
public static class SaleLineObject {
private SaleLine saleLine;
public SaleLine getSaleLine() {
return saleLine;
}
public void setSaleLine(SaleLine saleLine) {
this.saleLine = saleLine;
}
}
public static class SaleLine {
@JsonProperty("itemID")
private String itemId; //line_item_nk
@JsonProperty("unitPrice")
private String unitPrice;
....
}
@JsonPropertyOrder({"total", "calcSubTotal", "calcDiscount"})
public static class Sale {
private String saleTotal, calcSubtotal, calcDiscount;
private int salesValueWOVat;
@JsonProperty("SaleLines")
SaleLines saleLine;
@JsonCreator
public Sale (@JsonProperty("total")String saleTotal,
@JsonProperty("calcSubtotal")String calcSubtotal,
@JsonProperty("calcDiscount")String calcDiscount,
@JsonProperty("SaleLines")SaleLines saleLine,
) {
this.saleTotal = saleTotal;
this.calcSubtotal = calcSubtotal;
this.calcDiscount = calcDiscount;
this.saleLine = saleLine;
setSalesValueWOVat();
}
//getter and setters
}
@SuppressWarnings({ "rawtypes" })
public static <E, T extends Collection> T readFromJsonAndFillType (
String json,
Modules module,
Class <T> collectionType,
Class <E> elementType)
throws JsonParseException, JsonMappingException, IOException {
ObjectMapper objMapper = new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
TypeFactory tf = objMapper.getTypeFactory();
JsonNode node = objMapper.readTree(json).get(module.jsonFieldName);
return objMapper.readValue(node.toString(),
tf.constructCollectionType(collectionType, elementType));
}
Dans les principales
ArrayList<Sale> saleList = readFromJsonAndFillType(
saleJSON,
Modules.SALE,
ArrayList.class,
Sale.class);
for (Sale sale: saleList) {
System.out.println(sale.toString());
}
Je sais que cette question a été posée à plusieurs reprises et j'ai pris de l'aide auprès de ge
Ne peut pas désérialiser instance de java.util.Liste de tableaux de START_OBJECT jeton
Encore, mais je ne peut pas obtenir par le biais de cette erreur
- S'il vous plaît dites-nous comment vous pensez que le JSON peut être désérialisé à votre objet arborescence.
- Aussi nous montrer le code qui effectue la désérialisation.
- Veuillez voir le modifier
- Vous avez un objet JSON
{..}
et que vous essayez de désérialiser à un tableau. Comment pensez-vous que cela devrait fonctionner? - mais l'objet json est, dans le tableau, c'est pourquoi j'ai un tableau et puis la classe represting l'objet json :/
- Aah, pas de soucis. Son json c'est le problème. Il y a quelques SaleLine où il a un tableau et d'objets à l'intérieur alors que si il y a un seul objet, puis il n'y a pas de tableau.. je vais supprimer cette question en temps et poser des questions sur les objets dans le tableau et l'objet sans le tableau de problème..
- Je vais la chercher.
- mais d'abord je vais lutte 🙂
Vous devez vous connecter pour publier un commentaire.
Je sais que cette question a été posée plusieurs fois & tout le monde en train de se rétablir il y a des problèmes de différentes façons. Chaque fois que vous trouvez "ne Peut pas désérialisé instance de START_OBJECT token". il est généralement se produire lorsque vous essayez d'obtenir un objet qui n'est pas réellement même au format json (moyens json de départ de l'objet n'est pas que vous les gars sont de conversion).
Ex:- Json retour de l'objet premier est de type Boolean, mais malheureusement, vous êtes la conversion d'une Liste<Object> alors vous allez avoir cette erreur.
Je suggère de regarder, de lire le format à l'aide de code ci-dessous que convertir comme par l'objet de retour.
Obtenir la clé & convertir la valeur conformément à l'objet de retour.
Pour référence:- https://dzone.com/articles/processing-json-with-jackson