Обновление: после просмотра API перевода Google выглядит, что параметр обратного вызова JSONP является необязательным.Не указывайте обратный вызов, и у вас больше не будет этой проблемы.:)
http://code.google.com/apis/language/translate/v2/using_rest.html#WorkingResults
Лучший вариант:
Если вы можете, укажите в своем вызове API Google, что функция обратного вызова отсутствует,Если вы можете просто запросить простой JSON вместо JSONP, вы можете просто использовать оператор выбора.
Не лучший вариант:
Если API возвращает только JSONP, тогда вы можетезамените регулярное выражение, чтобы удалить заполнение из JSON, что позволит вам использовать оператор выбора.
Что вам понадобится:
Полный пример приложения:
ruleset a60x494 {
meta {
name "jsonp-to-json-test"
description <<
jsonp-to-json-test
>>
author "Mike Grace"
logging on
}
global {
returnedJsonpAsString = 'handleResponse({ "data": { "responses": [ { "response": "successful" } ] } } );';
datasource googleApi <- "blah blah blah";
}
rule fix_jsonp_to_json {
select when pageview ".*"
pre {
cleanJson = returnedJsonpAsString.replace(re/^.*\((.*)\);/,"$1");
response = cleanJson.decode().pick("$..response");
}
{
notify("Response",response) with sticky = true;
emit <|
console.log(returnedJsonp);
console.log(cleanJson);
|>;
}
}
}