如何用Liquid从JSON中提取键值对并转换为指定格式?
解决Liquid转换JSON格式的问题
你的问题出在哈希对象的遍历方式和输出格式处理上,以下是修正方案:
错误原因
当你用{% for data in content %}遍历JSON对象时,Liquid会把每个键值对转为[键, 值]格式的数组,直接输出data[0]和data[1]会缺少引号与JSON结构包裹,导致结果不符合预期。
正确实现代码
使用Liquid的键值对遍历语法{% for key, value in content %},直接获取键和值,同时输出标准JSON结构:
{%- for key, value in content -%} { "Key": "{{ key }}", "Value": "{{ value }}" }{%- unless forloop.last -%},{%- endunless -%} {%- endfor -%}
代码说明
{% for key, value in content %}:直接遍历content对象的键和值,无需通过数组下标获取{{ key }}和{{ value }}:分别输出键名与对应值,用双引号包裹符合JSON字符串要求{%- unless forloop.last -%},{%- endunless -%}:处理多键值对时的逗号分隔,避免最后一个对象后出现多余逗号
如果只需要转换第一个键值对,可在循环内添加{% break %}终止遍历:
{%- for key, value in content -%} { "Key": "{{ key }}", "Value": "{{ value }}" } {% break %} {%- endfor -%}
输出结果
针对你的输入JSON,上述代码会输出:
{ "Key": "key1", "Value": "value1" }, { "Key": "key2", "Value": "value2" }
若添加{% break %}则仅输出第一个键值对的JSON对象。
内容的提问来源于stack exchange,提问作者Sahithi K
相关产品推荐
相关产品推荐

