2014-06-13 1 views
4

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?

+2

Ressemble à un bug –

+0

Numéro créé à l'adresse https://github.com/ckan/ckan/issues/1776 – fgalan

Répondre

4

Merci! Vous avez trouvé un bug. Je l'ai corrigé sur https://github.com/ckan/ckan/pull/1776 et j'ai envoyé une demande de retrait. Cela sera examiné par un autre développeur principal et sera bientôt fusionné.

Si vous avez un peu de temps, il serait utile de tester cette branche pour confirmer qu'elle résout ce problème. Si vous le faites, veuillez ajouter un commentaire sur la demande de tirage.

À la votre!

Questions connexes