JSON-lib экранирование / сохранение строк - PullRequest
5 голосов
/ 28 декабря 2010

Я использую библиотеку JSON-lib для Java http://json -lib.sourceforge.net

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

пример:

JSONObject object = new JSONObject();
String chatMessageFromUser = "{\"dont\":\"treat it as json\"}";
object.put("myString", chatMessageFromUser);

object.toString() даст нам {"myString":{"dont":"treat it as json"}}

и я хочу просто иметь {"myString":"{\"dont\":\"treat it as json\"}"}

Как этого добиться без изменения исходного кода?Я использую этот фрагмент кода в качестве транспорта для сообщений чата от пользователей - поэтому он работает нормально для обычных сообщений чата, но когда пользователь вводит формат JSON в качестве сообщения, он прерывает его из-за поведения JSON-lib по умолчанию, описанного здесь.

Ответы [ 2 ]

5 голосов
/ 28 декабря 2010

Если я правильно понимаю вопрос, я думаю, что json-lib уникален в своем предположении о том, что передаваемая строка должна быть проанализирована.Другие библиотеки обычно рассматривают его как String для включения (с экранированием двойных кавычек и обратной косой черты, если необходимо), то есть работают так, как вы ожидаете.

Так что вы можете рассмотреть другие библиотеки: я бы рекомендовал Джексон , Гсон тоже работает.

4 голосов
/ 28 декабря 2010

json-simple предлагает метод JSONObject.escape().

...