Как я могу редактировать элемент JSON на месте, не переписывая остальную часть объекта JSON? - PullRequest
2 голосов
/ 02 апреля 2011

Я получаю несколько объектов в настоящее время в формате JSON, и мне нужно иметь возможность изменять их части, оставляя более поздние части ТОЧНО, пространство для пространства, бит за битом, идентичное.

Например, представьте, что я получаю следующий объект

{
"example": [
            {
                "Name": "Thing One",
                "Line2": "more text. ABCD\nEFG"
            },
            {
                "Name": "Thing Two",
                "Line2": "XYZZY..."
            }
            {
                "Name": "Thing Three",
                "Line2": [
                         {
                              "SubElement": "Sub1",
                              "SubElement": "Sub2"
                         ]
            }
        ]
}

Если я хочу, чтобы объект JSON был таким, чтобы «Thing One» читал «Thing 111», оставляя Thing Three ТОЧНО, как это сейчас, есть ли способ сделать это?

Прямо сейчас я преобразую его в словарь, модифицирую элемент, а затем преобразую обратно, но это плохо работает для этого сценария.

Моя резервная позиция - конвертировать в XML и использовать регулярные выражения, но это ужасно.

Ответы [ 3 ]

2 голосов
/ 02 апреля 2011

Аргумент object_pairs_hook функций загрузки json позволит вам использовать OrderedDictionary, чтобы вы могли сохранять тот же порядок элементов объектов JSON.

1 голос
/ 02 апреля 2011

Лучший ответ на этот вопрос может быть «Не делай этого».Если мне нужно, чтобы биты оставались идентичными, я могу заменить «Thing Three» на версию BASE64 или yENC.

0 голосов
/ 05 апреля 2011

Мое текущее решение этой проблемы состоит в том, чтобы JSON был в наиболее компактном формате. Нет пробелов,;: и т. Д. Переформатирование должно быть в порядке, если мы всегда переформатируем одно и то же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...