Javascript: Escape "из строки JSON - PullRequest
1 голос
/ 15 июля 2010

У меня есть небольшая проблема. В настоящее время я работаю над преобразованием старой системы в более новую версию. В старой версии запросы данных управлялись апплетами Java, у которых не было проблем с "-char в данных". Теперь, однако, я извлекаю данные из базы данных и преобразую их в JSON-строку, используя XSLT, а затем - с помощью функции prototype .evalJSON () - превращаю строку в объект. Затем XSL структурирует данные следующим образом (пример):

{rowsets: [ { rows: [ { "ID":"xxx","OtherProperty":"yyy" } ] } ] }

Что само по себе нормально. Теперь, когда в базе данных, содержащей "-символы", есть некоторые данные, evalJSON () завершается ошибкой, потому что он уничтожает обычно хорошо отформатированную строку JSON, например:

{rowsets: [ { rows: [ { "ID":"xxx","OtherProperty":"yyy "more" zzz" } ] } ] }

Теперь, то, что я хочу сделать, это как-то избежать «нежелательных» символов - без необходимости создавать какие-то хранимые процедуры для меня на стороне сервера. Я пытался обернуть голову вокруг RegEx, но я не очень опытен в этой области, и поэтому мне действительно трудно понять это.

Если это поможет, последовательности символов, которые обязательно будут допустимы: [":"] а также [","] и последовательности, которые могут появиться и должны быть экранированы: [\ s "], [" \ s], [",], [".] (\ s обозначает пробел)

Мы ценим всевозможную помощь, даже если какой-то SQL делает все это намного проще:)

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 15 июля 2010

Если вы находитесь на земле XSLT, то вы заново изобретаете колесо. Гугл до "badgerfish" и посмотрите здесь для довольно надежной реализации. Конечно, у вас могут возникнуть другие проблемы, но обо всем по порядку.

0 голосов
/ 16 июля 2010

В итоге я воспользовался ярлыком, используя шаблон замены строк в своем XSL, чтобы заменить «-символы на \» перед возвратом JSON в мою функцию javascript, поэтому не нужно ничего экранировать на стороне клиента.

(Использовано это: http://geekswithblogs.net/Erik/archive/2008/04/01/120915.aspx)

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