Как мне сохранить строку с `" `в ней? - PullRequest
1 голос
/ 18 апреля 2009

Я хочу иметь объект JSON со значением атрибута в виде строки с символом ". Например:

{
"Dimensions" : " 12.0" x 9.6" "
}

Очевидно, что это невозможно. Как мне это сделать? С Python.

Ответы [ 3 ]

7 голосов
/ 18 апреля 2009

Исаак прав.

Что касается того, как это сделать в python, вам нужно предоставить более подробное объяснение того, как вы строите свой JSON объект. Например, предположим, что вы не используете внешние библиотеки и делаете это вручную (я знаю, это смешно), вы бы сделали это:

>>> string = "{ \"Dimensions\" : \" 12.0\\\" x 9.6\\\" \" }"
>>> print string
{ "Dimensions" : " 12.0\" x 9.6\" " }

Очевидно, это глупо. Если вы используете стандартный модуль Python JSON, попробуйте это:

from json import JSONEncoder
encoder = JSONEncoder()
string = encoder.encode({ "Dimensions":" 12.0\" x 9.6\" " })

>>> print string
{"Dimensions": " 12.0\" x 9.6\" "}

что является желаемым результатом.

3 голосов
/ 19 апреля 2009

В Python есть два символа, которые вы можете использовать для указания строковых литералов: одинарные и двойные.

Например: my_string = "Я дома!"

Или, что более важно для вас,

>>> string = '{ "Dimensions" : " 12.0\\\" x 9.6\\\" " }'
>>> print string
{ "Dimensions" : " 12.0\" x 9.6\" " }

Вы также можете добавить в строку префикс «r», чтобы указать, что это необработанная строка, поэтому экранированные последовательности с обратной косой чертой не обрабатываются, что делает ее более чистой.

>>> string = r'{ "Dimensions" : " 12.0\" x 9.6\" " }'
>>> print string
{ "Dimensions" : " 12.0\" x 9.6\" " }
1 голос
/ 18 апреля 2009

JSON.stringify, если вы используете Javascript, избавит его от вас.
Если нет, вы можете избежать их, как \ "(поставить \ перед)
Редактировать: в Python попробуйте re.escape () или просто замените все "на \":

"json string".replace("\"","\\\"");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...