J'ai défini un champ nommé "valeur" de type JSON (parmi d'autres champs) dans un magasin de données de ressources. Si je lance upserts en utilisant des valeurs simples ou non des tableaux vides tous les travaux ok:Insertion de tableaux vides dans des champs de type JSON dans la banque de données
POST http://host/api/3/action/datastore_upsert
{
"resource_id": "...",
"records": [
{ "value": [ "1", "2" ] }
],
"method": "insert",
"force": "True"
}
POST http://host/api/3/action/datastore_upsert
{
"resource_id": "...",
"records": [
{ "value": "23" }
],
"method": "insert",
"force": "True"
}
Cependant, si j'utilise un tableau vide
POST http://host/api/3/action/datastore_upsert
{
"resource_id": "...",
"records": [
{ "value": [ ] }
],
"method": "insert",
"force": "True"
}
je reçois l'erreur suivante:
{
...
"success": false,
"error": {
"info": {
"orig": [
"malformed record literal: \"{}\"\nLINE 2: VALUES (NULL, NULL, NULL, NULL, '{}', NULL, to_t...\n ^\nDETAIL: Missing left parenthesis.\n"
]
},
"__type": "Validation Error",
"data": "(DataError) malformed record literal: \"{}\"\nLINE 2: VALUES (NULL, NULL, NULL, NULL, '{}', NULL, to_t...\n ^\nDETAIL: Missing left parenthesis.\n"
}
}
Étant donné que [ ]
est un élément valide dans JSON, je me demande pourquoi cette erreur se produit. Est-ce un problème/bug connu dans l'API du datastore CKAN?
Ressemble à un bug –
Numéro créé à l'adresse https://github.com/ckan/ckan/issues/1776 – fgalan