Подтвердить что ты не робот

Сериализовать JSON со знаком плюса с недопустимым JSON

Я работаю с данными через вызов IBM MQ, где 0 возвращается как +0.0, когда это сериализуется ColdFusion 10 (10,0,11,285437), это приводит к недействительным JSON и не может быть десериализовано.

stPolicy = { "prem": "+0.0" };
serializedData = serializeJSON(stPolicy);
writeDump(isJSON(serializedData));
writeDump(deserializeJSON(serializedData));

Вывод NO для isJSON и ошибка при десериализации JSON parsing failure at character 9:'+' in {"prem":+0.0}.

Я могу обойти это, заменив все +0 на 0, но я предполагаю, что это ошибка в ColdFusion. Кто-нибудь еще имел эту проблему и реализовал лучшее исправление?

Отправлен отчет об ошибке: Ошибка # 3632972

4b9b3361

Ответ 1

У Adobe есть ошибка, указанная как исправленная в своей базе данных ошибок, но она еще не выпущена. Вот исправление, с которым я столкнулся. Просто замените +0 на 0

private string function serializeJSONFixCF10(required string serializedData) {
  return replace(arguments.serializedData,'+0','0','all');
}