【问题标题】:JQ: Numeric field namesJQ:数字字段名称
【发布时间】:2019-08-25 22:42:56
【问题描述】:

我在 Windows10 环境 (PowerShell) 中使用 JQ 1.5。 我构建了一个 jq 语句,该语句适用于 jqplay 上的示例数据,但在我的环境中引发错误:

示例:Code share

代码:

. | { last_update:  .starbase_detailed_scan.last_update_time, user_name:  .starbase_detailed_scan.owner_name, alliance_id: .starbase_detailed_scan.owner_alliance_id, drydocks: .starbase_detailed_scan.num_drydocks, tier: .starbase_detailed_scan.owner_level, defence_plattform: .starbase_detailed_scan.num_defence_platforms, shield_triggered: .starbase_detailed_scan.player_shield.triggered_on, shield_end: .starbase_detailed_scan.player_shield.expiry_time, parsteel: .resources."325683920".current_amount, tritanium: .resources."743985951".current_amount, dilithium: .resources."2614028847".current_amount, user_id: .starbase_detailed_scan.owner_user_id, defence_rating: .starbase_detailed_scan.defense_rating }

问题在于带有数字标识符的 JSON 对象。在 jqplay 我得到了正确的值。在 PowerShell jq 上出现错误。我预计这是一个 PowerShell 问题,所以我尝试将过滤器移动到过滤器文件中。然后错误消失了,但我只得到 NULL 作为三个对象的值。

【问题讨论】:

  • 不要在 PowerShell 中使用 jq。 PowerShell 带有自己的 JSON 解析器,所以只需使用它。
  • 您在那里添加的过滤器无论如何都无效。你到底在跑什么?
  • 更新了过滤器。出现复制和粘贴错误
  • @TimoC 为什么会有人点击那个链接并复制那个巨大的 JSON,然后继续工作呢?你不能在你的问题中加入一个小而有代表性的例子吗?

标签: json powershell jq


【解决方案1】:

json 路径中的数字需要标记为 Oldschool,如: .starbase_detailed_scan.resources["2614028847"]

BR 蒂莫

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多