2013-12-06 3 views
0

Я использую cgi для чтения объектов javascipt (JSON), которые имеют функции javascipt, заключенные в двойные кавычки, и мое требование - удалить кавычки вокруг любой такой функции javascript.Заменить двойные кавычки о функции javascript в perl

Например:

"value" : "helloWorld('hello')" 

выше отрывок из пары ключей значения, и мне нужно, чтобы получить что-то вроде этого после операции подстановки.

"value" : helloworld('hello') 

Таким образом, конечный результат должен иметь кавычки удалены из яваскрипта function.I я использую Perl для CGI программирования и хотел бы получить ответ на такой же.

+1

Regex не собирается делать трюк здесь. Функция javascript может быть построена таким образом, что вам придется повторно реализовать синтаксис javascript в регулярном выражении, чтобы правильно его разобрать. –

+0

Что вы подразумеваете под «удалением котировок»? Вы просите его разобрать, как будто цитаты там не были? Как бы вы могли сказать, что это не просто текст, который имеет в нем круглые скобки, а не фактический вызов функции? –

+0

Линдриан, вы правы. Я буду вызывать функции javascript по их сигнатурам методов (никаких анонимных функций). Также я буду иметь эти функции внутри вложенного json-объекта. Так что, я думаю, используя регулярное выражение для обнаружения функций, трюк для меня! – touchStone

ответ

0

Вам ничего не нужно удалять. JSON :: XS или любой другой парсер JSON, который вам нравится, вернет helloworld('hello') для значения этого ключа.

use JSON::XS qw(decode_json); 
my $json = q{{"value" : "helloworld('hello')"}}; 
say decode_json($json)->{value}; # helloworld('hello') 

Все, что вам нужно сделать, это написать функцию, аналогичную encode_json, которая выводит в формате вы хотите, а не JSON (т.е. с соответствующими значениями некотируемым).

Тогда ваш код будет:

print encode_myformat(decode_json($json)); 
+0

На самом деле, эта функция будет частью вложенной структуры json, и мне нужно удалить кавычки из определенных вхождений метода. Будет ли ваш подход, помогите мне в том, чего я хочу достичь? – touchStone

+0

Все, что я сказал, все еще применяется. – ikegami

Смежные вопросы