Декодируйте сложный JSON в Python

вставляют в страницу (идентификатор, заголовок, тело, страница, видимая) Выбор 2, заголовок, тело, страница, видимая

, Может быть сделана (только в MySQL) без УДАЛЕНИЯ при помощи НА ДУБЛИРУЮЩЕМСЯ КЛЮЧЕВОМ ОБНОВЛЕНИИ:

INSERT
    INTO page (id, title, body, page, visible)
    SELECT 1, title, body, page, visible FROM page WHERE id=2
    ON DUPLICATE KEY UPDATE
        title= VALUES(title), page= VALUES(page), visible= VALUES(visible);

Однако может также сделанный (возможно, лучше) совместимым ANSI способом с самосоединением:

UPDATE page AS page1 JOIN page AS page2 ON page1.id=1 AND page2.id=2
SET page1.title=page2.title, page1.body= page2.body, page1.page= page2.page, page1.visible=page2.visible
5
задан Saggi Malachi 4 August 2009 в 23:05
поделиться

3 ответа

Попробуйте поставить перед строкой префикс 'r', чтобы сделать ее необработанной:

# Python 2.6.2
>>> import json
>>> s = r'{"a":{"a1":"{\"foo\":\"bar\",\"foo1\":\"bar1\"}"}}'
>>> json.loads(s)
{u'a': {u'a1': u'{"foo":"bar","foo1":"bar1"}'}}

То, что Алекс говорит ниже, верно: вы можете просто удвоить косую черту. (Его ответ не был опубликован, когда я начал свой.) Я думаю, что использовать необработанные строки проще, хотя бы потому, что это языковая функция, которая означает то же самое, и в ней труднее ошибиться.

9
ответ дан 13 December 2019 в 19:32
поделиться

Попробуйте

Возможно, simplejson слишком "прост".

1
ответ дан 13 December 2019 в 19:32
поделиться

Если вы хотите вставить обратную косую черту в строку, они должны экранировать сами себя.

import simplejson as json
json.loads('{"a":{"a1":"{\\"foo\\":\\"bar\\",\\"foo1\\":\\"bar1\\"}"}}')

Я тестировал это, и Python отлично справляется с этим вводом, за исключением того, что я использовал модуль json, включенный в стандарт библиотека ( import json , Python 3.1).

1
ответ дан 13 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: