web-dev-qa-db-ja.com

MySQLのJSON配列形式が機能しない?

MySQLでJSONデータ配列を実行する適切な方法は何ですか?

次のJSON.orgの例 http://json.org/example.html は機能しません。

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

エラー3140(22032):無効なJSONテキスト:「ドキュメントルートの後に他の値を続けてはなりません。」列 'zz_TEST_ObsJSON.jsonData'の値の36桁目。

クスクス笑いについては、すべてを別の{}に入れてみました。

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

エラー3140(22032):無効なJSONテキスト:「オブジェクトメンバーの名前がありません。」列 'zz_TEST_ObsJSON.jsonData'の値の位置1。

このようなgeoJSONのような別のメソッドも、次のことは行いません。

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

エラー3140(22032):無効なJSONテキスト:「配列要素の後にコンマまたは ']'がありません。」列 'zz_TEST_ObsJSON.jsonData'の値の位置10。

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

エラー3140(22032):無効なJSONテキスト:「配列要素の後にコンマまたは ']'がありません。」列 'zz_TEST_ObsJSON.jsonData'の値の位置9。

3
Anthony S.

2つのオブジェクトTest1Test2を含むJSON配列を挿入しようとしていますか?

その場合は、データを配列として挿入する必要があります。

JSON配列:

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

INSERTステートメントは次のようになります(JSONオブジェクトの周りのラッピングブラケットに注意してください)。

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

ここでのあなた自身の問題は、JSONを理解していないことです。データベースでは、JSONは任意の1つのJavaScriptオブジェクトを格納できます。

object
array
string
number
"true"
"false"
"null"
  • 最初の例では、2オブジェクトを格納しようとしています。それはできません。オブジェクト(それ自体がキーとしてオブジェクトを持つ場合があります)のみを保存できます。
  • 2番目の例では、それ自体がオブジェクトであるキーを持つオブジェクトを格納しようとします。それもできません。
  • 3番目の例では、[k:v]の要素を持つ配列を作成しようとします。
  • 4番目の例では、2配列を格納しようとします。それはできません。配列のみを格納できます(それ自体が要素として配列を持つ場合があります)。
0
Evan Carroll