Bonjour,
Dans les flux JSON, lorsqu’un champ peut contenir une collection de valeurs, il arrive que le premier item de la collection (s’il n’y en a qu’un seul) soit directement à la racine du champ. Par exemple :
"isLocatedAt": {
"schema:closes": {
"@value": "20:30:00",
"@type": "xsd:time"
},
...
}
Alors que lorsqu’il y a plusieurs éléments dans la collection on aura :
"isLocatedAt": {
1: {
"schema:closes": {
"@value": "20:30:00",
"@type": "xsd:time"
},
...
}
2: {
"schema:closes": {
"@value": "20:30:00",
"@type": "xsd:time"
},
...
},
...
}
Il arrive même parfois que le champ contienne directement une chaîne de caractère (par exemple le champ hasBeenCreatedBy.schema:email) lorsqu’il y a un seul élément, ou bien un tableau même lorsqu’il n’y a qu’un seul élément.
Cette inconsistance dans la structure du flux le rend un peu difficile à manipuler et oblige une phase manuelle de traitement, qui pourra potentiellement être source de bugs, puisqu’il faut maintenir une liste de champs concernés par cette spécificité.
J’en profite aussi pour une seconde doléance : les tableaux numériques (collections) sont indexés à partir de 1, or en JSON un tableau numérique commence à 0. Du coup les objets JSON chargés en mémoire sont plus volumineux (puisqu’il s’agit de hashmap plutôt que de tableaux numériques), et ne sont jamais des tableaux numériques.
Merci