JSON запрос модификации
Мне нужно изменить мой JSON. я хочу удалить "
до [
а также ]
Текущий запрос:
{"marital-status":"Single","hospitalisation":"["hello", "world"]","ill-health":false,"specialist-condidtions":"["HEADACHE", "PANIC ATTACK"]","smoker":false,"health-concerns":false}
Модифицированный запрос:
{"marital-status":"Single","hospitalisation":["hello", "world"],"ill-health":false,"specialist-condidtions":["HEADACHE", "PANIC ATTACK"],"smoker":false,"health-concerns":false}
Я пытался использовать функцию перевода fn:translate(req,'"[','[')
но это заменило все мои "
так же как [
,
2 ответа
<rant>
Вы действительно должны исправить процесс Java, который генерирует искаженный вывод, чтобы гарантировать, что он генерирует допустимый JSON. Попытки восстановить испорченные данные - пустая трата времени и не позволяют использовать стандартные форматы данных. Также может произойти сбой в случайное время, когда "исправление" не может обработать все крайние случаи. </rant>
Причина по которой fn:translate()
не сработало так, как вы ожидали, это то, что вы, вероятно, ожидали, что он будет работать больше как поиск / замена полных строк, но он основан на символах. Первый символ второго параметра будет заменен первым символом третьего параметра (или удален, если соответствующего символа нет), а затем каждым последующим символом в строках. Так, fn:translate(req,'"[','[')
на самом деле означало "заменить двойную кавычку на [и заменить [на ничто".
Чтобы удалить оскорбительные символы, вы можете использовать fn:replace()
, который берет шаблон регулярного выражения для того, что найти, и строку для того, что заменить на:
fn:replace(fn:replace(req, '"\[', "["), '"\]', "]")
Если у вас есть XML в конвейере, почему бы вам просто не использовать NXSD для автоматического перевода в json.
Чтобы сделать это, пока у вас есть XSD Для JSON, тогда просто используйте компонент nXSD, перевод произойдет автоматически?
https://svgonugu.com/2015/12/27/using-translate-activity-for-xml-to-json/