krl - 在 KRL 中处理响应

标签 krl

我正在使用 KRL 通过他们的 API 向 google 发送请求,这是我从他们那里得到的字面响应:

handleResponse({ "data": { "responses": [ { "response": "successful" } ] } } );

您建议我如何通过 pick 处理它,因为它不是“有效”的 JSON 语法?它包含有效的 JSON 语法,但作为一个整体是无效的。感谢您的帮助。

最佳答案

更新:查看 Google 翻译 API 后,JSONP 回调参数似乎是可选的。不要指定回调,您将不再遇到此问题。 :)

http://code.google.com/apis/language/translate/v2/using_rest.html#WorkingResults

更好的选择:

如果可以,请在对 google API 的调用中指定没有回调函数。如果您可以只请求纯 JSON 而不是 JSONP,您可以只使用 pick 运算符。

不是更好的选择:

如果 API 仅返回 JSONP,那么您可以执行正则表达式替换以从 JSON 中删除填充,这样您就可以使用 pick 运算符。

你需要什么:

完整的应用示例:

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);
      |>;
    }
  }
}

关于krl - 在 KRL 中处理响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4475402/

相关文章:

krl - 使用 KBX 扩展 : how to avoid having to deploy at every code modification? 进行调试

krl - Kynetx 插件与网站标签——如何区分?

javascript - 如何在 Kynetx 规则中正确发出 javascript?

KRL双执行环境的调试工具和技巧

javascript - 我在哪里可以在 KRL 规则集中使用 $K jquery?

krl - 如何在KRL Webhook中选择参数?

krl - 对 KRL 中的哈希执行 "ORDER BY ... LIMIT ..."样式查询

KRL 和雅虎本地搜索

krl - Kynetx twilio :place_call

krl - 如何在发射中设置实体变量的值