【问题标题】:Extract JSON from Facebook Marketing API using XPATH in Talend在 Talend 中使用 XPATH 从 Facebook Marketing API 中提取 JSON
【发布时间】:2017-08-16 13:09:30
【问题描述】:

目前我正在从 Facebook Marketing API 中提取数据。 我在 Talend Studio 中对通过 API 获得的 JSON 使用 XPATH 查询。

由于这是我第一个使用 JSON 和 XPATH 的作业,我需要一些帮助来进行以下提取:

首先是我的 JSON 的一部分:

{
  "data": [
    {
      .
      .
      .
      "adsets": {
        "data": [
          {
           .
           .
           .
            "targeting": {
              "age_max": 60,
              "age_min": 18,
              "geo_locations": {
                "countries": [
                  "DE"
                ]
              },
              "facebook_positions": [
                "feed",
                "right_hand_column"
              ],
.
.
.

现在我想用 XPATH 从“facebook_positions”中提取:

"/data/adsets/data/targeting/facebook_positions"

通过 XPATH 查询,我只得到“feed”作为我的结果,但我需要“feed,right_hand_column”,因为没有像 '“age_max”:60' 这样的值的键,我无法提取正确的路径。

提前感谢您的帮助!

最好的问候 钴

【问题讨论】:

    标签: json facebook xpath talend


    【解决方案1】:

    你试过了吗:-

    //facebook_positions
    

    //facebook_positions[1] -> 饲料

    //facebook_positions[2] -> right_hand_column

    示例:-

    打开以下网址:

    http://www.jsonquerytool.com/

    {
        "data": [{
            "adsets": {
                "data": [{
    
                    "targeting": {
                        "age_max": 60,
                        "age_min": 18,
                        "geo_locations": {
                            "countries": [
                                "DE"
                            ]
                        },
                        "facebook_positions": [
                            "feed",
                            "right_hand_column"
                        ]
                    }
                }]
            }
        }]
    }
    

    选择查询 JSON 为:-

    JSon 的 Xpath

    把查询写成:-

    //facebook_positions

    点击运行

    【讨论】:

    • 我都试过了,但结果仍然只得到“饲料”。此外,“(//facebook_positions)[1]”在 Talend 中引发了一个异常,因为它不喜欢 XPATH 查询中的“(”。相反,我尝试了“//facebook_positions[1]”,但结果也只得到了“feed”
    • 试试 //facebook_positions[2] ...数组位置应该返回你的 right_hand_column
    • 谢谢,成功了!但是如果我得到一个非特定数量的结果并且我想把所有的结果放在一起(得到整个数组),有可能吗?
    • 使用脚本可以检查对象大小的长度并迭代每个值直到长度结束
    • 谢谢。在 Talend 中,我必须直接在 '/data/adsets/data/targeting/facebook_positions' 上使用另一个 XPATH 循环,并作为 XPATH 请求 './.'迭代该数组
    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多