web-dev-qa-db-fra.com

Le format de tableau JSON dans MySQL ne fonctionne pas?

Quelle est la bonne façon de faire un tableau de données JSON dans MySQL?

Suivre l'exemple JSON.org http://json.org/example.html ne fonctionne pas:

 insert into zz_TEST_ObsJSON (jsonData) values ('{"Test1":{"Val1":"37", "Val2":"25"}},{"Test2":{"Val1":"25", "Val2":"27"}}');

ERREUR 3140 (22032): texte JSON non valide: "La racine du document ne doit pas suivre d'autres valeurs." à la position 36 dans la valeur de la colonne 'zz_TEST_ObsJSON.jsonData'.

Pour les rires, essayez de tout mettre dans un autre {}:

insert into zz_TEST_ObsJSON (jsonData) values ('{{"Test1":{"Val1":"37", "Val2":"25"}},{"Test2":{"Val1":"25", "Val2":"27"}}}');

ERREUR 3140 (22032): texte JSON non valide: "Il manque un nom pour le membre d'objet." à la position 1 dans la valeur de la colonne 'zz_TEST_ObsJSON.jsonData'.

Cette autre méthode qui ressemble à geoJSON ne fait pas non plus:

insert into zz_TEST_ObsJSON (jsonData) values ('[["Test1":{"Val1":"37", "Val2":"25"}],["Test2":{"Val1":"25", "Val2":"27"}]]');

ERREUR 3140 (22032): texte JSON non valide: "Il manque une virgule ou ']' après un élément de tableau." à la position 10 dans la valeur de la colonne 'zz_TEST_ObsJSON.jsonData'.

insert into zz_TEST_ObsJSON (jsonData) values ('["Test1":{"Val1":"37", "Val2":"25"}],["Test2":{"Val1":"25", "Val2":"27"}]');

ERREUR 3140 (22032): texte JSON non valide: "Il manque une virgule ou ']' après un élément de tableau." à la position 9 dans la valeur de la colonne 'zz_TEST_ObsJSON.jsonData'.

3
Anthony S.

Essayez-vous d'insérer un tableau JSON avec deux objets, Test1 et Test2?

Si tel est le cas, vous devez insérer les données sous forme de tableau:

Tableau JSON:

[{
  "Test1": {
    "Val1": "37",
    "Val2": "25"
  }
}, {
  "Test2": {
    "Val1": "25",
    "Val2": "27"
  }
}]

Votre instruction INSERT ressemblerait à la suivante (notez les crochets entourant les objets JSON):

INSERT INTO zz_TEST_ObsJSON (jsonData) values ('[{"Test1":{"Val1":"37", "Val2":"25"}},{"Test2":{"Val1":"25", "Val2":"27"}}]');
2
Jerod Johnson

Votre propre problème ici est que vous ne comprenez pas JSON. Dans la base de données JSON peut stocker n'importe quel objet JavaScript,

object
array
string
number
"true"
"false"
"null"
  • Dans le premier exemple, vous essayez de stocker des objets two. Tu ne peux pas faire ça. Vous ne pouvez stocker qu'un objet (qui peut lui-même avoir des objets comme clés).
  • Dans le deuxième exemple, vous essayez de stocker un objet avec une clé qui est elle-même un objet. Vous ne pouvez pas faire ça non plus.
  • Dans le troisième exemple, vous essayez de construire un tableau avec des éléments de [k:v].
  • Dans le quatrième exemple, vous essayez de stocker deux tableaux. Tu ne peux pas faire ça. Vous ne pouvez stocker qu'un tableau (qui peut lui-même avoir des tableaux en tant qu'éléments).
0
Evan Carroll