【问题标题】:Shopify Looping Over JSON Metafield ArraysShopify 循环遍历 JSON 元字段数组
【发布时间】:2022-06-17 03:34:27
【问题描述】:

由于某种原因,我无法访问 JSON 元字段中的数组。我尝试了其他 StackOverflow 答案,并且我正在使用值等,但无法弄清楚,这是我的元字段:

product.metafields.artist.releases

值为:

{
  "releases": [
   { 
    "id": 0,
    "releaseName": "lofi 1",
    "coverArt": "",
    "releaseLink": “”
},
 { 
"id": 1,
    "releaseName": " lofi 2",
    "coverArt": "",
    "releaseLink": “”
  }
]}

(格式为:"{\"releases\":[{\"id\":0,\"releaseName\":\"lofi 1\",\"coverArt\":\"\",\"releaseLink\":“”},{\"id\":1,\"releaseName\":\"lofi 2\",\"coverArt\":\"google.com\",\"releaseLink\":“”}]}"

我在 product.custom.liquid 中使用它:

{{ product.metafields.artist.releases.value }}
  
{% assign releases = product.metafields.artist.releases.value %}
  
  {% for release in releases.releases %}
  
    {{ release.releaseName }}
  
  {% endfor %}

第一个显示得很好,如果我分配它并执行{{ releases }} 它也显示得很好,所以我知道分配正在工作,但我不能 forloop 遍历它(请注意,第一个对象在JSON 也称为发布(我也尝试将其全部重命名为唯一名称以防万一,但没有帮助))

【问题讨论】:

  • 奇怪...我的测试商店中有一个嵌套非常深的 JSON 元字段,我可以毫无问题地进行深度循环... ????
  • 嗯。非常奇怪 - 我的旧元字段从 json_string 第一次成为一个东西时就完全按预期工作,但是当我制作一个新元字段来测试它时,我无法让它工作。稍后将不得不对此进行更深入的研究,但看起来 Shopify 可能以某种方式改变了一些东西,从而降低了新元字段的效率

标签: json shopify liquid


【解决方案1】:

Liquid 不能像这样在 JSON 上工作。如果要遍历 JSON 对象数组,请使用 Javascript。

【讨论】:

  • 我真的希望这不是答案,但果然,在修补之后,就是这样。
【解决方案2】:

由于某种原因,当它是一个多维 JSON 数组时,它的行为很奇怪。有一个简单的解决方法,只需在分配的变量末尾添加 (-):

{%- assign releases = product.metafields.artist.releases.value -%}
  
  {% for release in releases.releases %}
  
    {{ release.releaseName }}
  
  {%- endfor -%}

希望它能像解决我的问题一样解决您的问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 2015-07-22
    • 2013-08-16
    • 2011-06-11
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多