Java - JSON serialize - дата истечения срока действия: от «12/28» до «12 \ / 28», т.е. - PullRequest
0 голосов
/ 09 ноября 2019

В Java я хочу сериализовать строку JSON, содержащую такие значения, как 12/28 - 12\/28

Используя Apache lib StringEscapeUtils, а затем для сериализации, используя jackson lib, вывод получается как 12\\/28: Токовый выход:

{
"expiryDate": "12\\/28"
}

Однако я хочу, чтобы выход был "12/28" Желаемый выход:

{
"expiryDate": "12\/28"
}

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 09 ноября 2019

В соответствии со спецификацией JSON (например, синтаксические диаграммы в http://json.org), \/ являются допустимой escape-последовательностью JSON.

Однако последовательность \/ означает то же самое, что и /, поэтому нет смысла использовать \/. (Соответствующий синтаксический анализатор JSON будет читать его как /.)

I Я не не знал ни о какой библиотеке JSONкоторый выдает / как \/ при сериализации данных в JSON. Однако, кажется, что json-simple ( link , link ) всегда экранирует / как \/:

  • Я не знаю, почему они решили это сделать.
  • Код, реализующий это поведение, находится в методе org.json.simple.JSONValue.

С другой стороны, мне неизвестна библиотека JSON, в которой не будет экранировать литерал \ в строке, когда он ее увидит. (Это может быть нарушено, IMO, если толькобыл частью конструктивной особенности для сшивания вместе уже отформатированных фрагментов строки JSON.)

0 голосов
/ 13 ноября 2019

После изучения некоторых опций удалось получить желаемый результат, используя ниже.

Использованная библиотека:

compile 'com.googlecode.json-simple:json-simple:1.1.1'

Пример кода:

JSONObject jsonObject = new JSONObject();
jsonObject.put("expiryDate", "12/28");
String jsonString = jsonObject.toString();

Вывод:

{"expiryDate":"12\/28"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...