Прежде всего, ваш JSON искажен. Вы не можете поставить запятую после последнего элемента в объекте.
"global": false,
},
должно быть
"global": false
},
И вам не хватает закрывающей скобки рядом с последними строками:
"global": false,
}
должно быть
"global": false
}
}
Итак, я полагаю, что вы не , используя MySQL 5.7 JSON
тип данных. Если бы вы были, это не позволило бы вам сохранить искаженный JSON. Это дало бы эту ошибку:
ОШИБКА 3140 (22032): Неверный текст JSON: «Отсутствует имя для члена объекта». в позиции 138 в значении для столбца '...'.
Как только я исправил формат, я смог проверить ваш JSON.
mysql [localhost] {msandbox} (test) > create table j (j json);
mysql [localhost] {msandbox} (test) > insert into j set j = '...your json...';
Тогда я мог бы извлечь запись для данного ника:
mysql [localhost] {msandbox} (test) > select j->'$.nick2' from j;
+------------------------------------------------------------------------+
| j->'$.nick2' |
+------------------------------------------------------------------------+
| {"color": [1, 0.15, 0.15], "global": true, "highlight": [0.2, 1, 0.2]} |
+------------------------------------------------------------------------+
Если я пытаюсь извлечь путь для ключа, который не существует, я получаю NULL:
mysql [localhost] {msandbox} (test) > select j->'$.nick3' from j;
+--------------+
| j->'$.nick3' |
+--------------+
| NULL |
+--------------+
Оператор ->
поддерживается в MySQL 5.7 и более поздних версиях. Доступ к нему также возможен как функция JSON_EXTRACT()
. См https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html
Вы можете сказать: «Я использую MySQL 5.6, как я могу сделать то же самое?»
Если вы хотите использовать JSON в MySQL, вам следует обновить его до 5.7 или более поздней. В MySQL 5.6 и более ранних версиях нет поддержки JSON. Если вы хотите увидеть, сколько усилий потребуется для анализа JSON в MySQL 5.6, посмотрите ответы здесь: Как получить значения из столбца MySQL (5.6), если он содержит документ json в виде строки , и обратите внимание чтобы получить функцию, которая наконец работает, нужны ответы нескольких людей.
Я полагаю, что для обновления до MySQL 5.7 меньше работы, чем вырвать волосы с помощью MySQL 5.6 для анализа JSON с такими запутанными хранимыми функциями.