Reputation: 852
Here is the object I try to deserialize:
public class DomaineBO {
private String nom;
private Set<String> codesQC;
private Set<String> codesSql;
...
Here are my JSon data:
[
{
"id":30,
"nom":"Usafe",
"gere":true,
"codesQC":[
{
"id":40,
"nom":"ServicesTransversaux",
"nomHTML":"ServicesTransversaux"
},
{
"id":41,
"nom":"%22Services%20Transversaux%22",
"nomHTML":"\"Services Transversaux\""
}
],
"codesSql":[
{
"id":61,
"nom":"USAF"
}
]
},
{
"id":33,
"nom":"Epublishing",
"gere":true,
"codesQC":[
{
"id":45,
"nom":"ServicesDocumentaires",
"nomHTML":"ServicesDocumentaires"
}
],
"codesSql":[
{
"id":64,
"nom":"EDIT"
}
]
},
{
"id":25,
"nom":"Commons",
"gere":true,
"codesQC":[
{
"id":34,
"nom":"Commons",
"nomHTML":"Commons"
}
],
"codesSql":[
{
"id":82,
"nom":"COM"
}
]
},
{
"id":22,
"nom":"Finance",
"gere":true,
"codesQC":[
{
"id":27,
"nom":"%22Refonte%20Contentieux%22",
"nomHTML":"\"Refonte Contentieux\""
},
{
"id":28,
"nom":"Finance",
"nomHTML":"Finance"
},
{
"id":29,
"nom":"%22Refonte%20Finance%20Client%22",
"nomHTML":"\"Refonte Finance Client\""
}
],
"codesSql":[
{
"id":45,
"nom":"FINA"
}
]
},
{
"id":32,
"nom":"Inconnu",
"gere":true,
"codesQC":[
],
"codesSql":[
]
},
{
"id":31,
"nom":"Marketing",
"gere":true,
"codesQC":[
{
"id":42,
"nom":"Marketing_ActionsCom",
"nomHTML":"Marketing_ActionsCom"
},
{
"id":44,
"nom":"Vente",
"nomHTML":"Vente"
},
{
"id":43,
"nom":"Marketing_Produits",
"nomHTML":"Marketing_Produits"
}
],
"codesSql":[
{
"id":63,
"nom":"MARK"
}
]
},
{
"id":26,
"nom":"Facturation",
"gere":true,
"codesQC":[
{
"id":35,
"nom":"Facturation",
"nomHTML":"Facturation"
}
],
"codesSql":[
{
"id":54,
"nom":"FACT"
}
]
},
{
"id":24,
"nom":"Sinistre",
"gere":true,
"codesQC":[
{
"id":32,
"nom":"Sinistre",
"nomHTML":"Sinistre"
},
{
"id":33,
"nom":"Entreprise",
"nomHTML":"Entreprise"
}
],
"codesSql":[
{
"id":47,
"nom":"SINI"
}
]
},
{
"id":23,
"nom":"Partenaire",
"gere":true,
"codesQC":[
{
"id":31,
"nom":"Partenaire",
"nomHTML":"Partenaire"
},
{
"id":30,
"nom":"Partenaires",
"nomHTML":"Partenaires"
}
],
"codesSql":[
{
"id":46,
"nom":"PART"
}
]
},
{
"id":1,
"nom":"Contrat",
"gere":true,
"codesQC":[
{
"id":24,
"nom":"Contrat",
"nomHTML":"Contrat"
}
],
"codesSql":[
{
"id":42,
"nom":"CONT"
}
]
},
{
"id":29,
"nom":"Services Transverses",
"gere":true,
"codesQC":[
{
"id":39,
"nom":"%22Services%20Transversaux%22",
"nomHTML":"\"Services Transversaux\""
},
{
"id":38,
"nom":"ServicesTransversaux",
"nomHTML":"ServicesTransversaux"
}
],
"codesSql":[
{
"id":58,
"nom":"SECU"
},
{
"id":57,
"nom":"DMS"
},
{
"id":60,
"nom":"INDE"
},
{
"id":59,
"nom":"JBPM"
}
]
},
{
"id":28,
"nom":"Flux de données",
"gere":true,
"codesQC":[
{
"id":37,
"nom":"%22Flux%20de%20donn%C3%A9es%22",
"nomHTML":"\"Flux de données\""
}
],
"codesSql":[
{
"id":81,
"nom":"FLUX"
}
]
},
{
"id":27,
"nom":"Reprise",
"gere":true,
"codesQC":[
{
"id":36,
"nom":"Reprise",
"nomHTML":"Reprise"
}
],
"codesSql":[
{
"id":55,
"nom":"FINA"
}
]
},
{
"id":21,
"nom":"Batch",
"gere":true,
"codesQC":[
{
"id":25,
"nom":"Batch",
"nomHTML":"Batch"
}
],
"codesSql":[
{
"id":44,
"nom":"BATCH"
}
]
}
]
And here is how I try to convert them:
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
DomaineBO[] infos = (DomaineBO[]) gson.fromJson(getJSonResponse(url), clazz);
Arrays.asList(infos);
When I am at the operation to convert it in my class DomaineBO
, I get the JsonSyntaxException with the message Expected a string but was BEGIN_OBJECT at line 1 column 51 path $[0].codesQC[0]
I supect it is because of the attributes that are Sets of Strings. I could try to make it with arrays but I wanted to know if there is a better way?
Upvotes: 0
Views: 503
Reputation: 1407
It is because in code you have set of String. Make class CodeQC with fields id, nom, nomHTML and change
Set<String> codesQC
to
Set<CodeQC> codesQC
Upvotes: 1