我正在使用QuickbasePipelines从REST API拉取数据并保存到表中。
B. Fetch JSON
C. Prepare Bulk Record Upsert
D. Iterate over JSON records
For each JSON Handler - JSON Objects (D) Do
E. Add Bulk Upsert Row
F. Commit Upsert
在 "添加批量上插行" 步骤中,我将表中的字段Map到传入JSON记录的属性。
我在JSON记录中遇到了一个关于"自定义字段"的挑战。有些字段在JSON中不是简单地显示为"key": "value"
对,而是显示在一个嵌套数组中,如下所示:
"custom_fields": [
{
"key": "street",
"value": "foo",
},
{
"key": "city",
"value": "bar",
},
{
"key": "state",
"value": "baz",
}
]
在upsert步骤中,我使用Jinja代码块,通过键从这个结构中提取特定的值:
{% for field in d.custom_fields %}
{% if field['key'] == 'street' %}
{{ field['value'] }}
{% endif %}
{% endfor %}
这对于 * Text * 类型的字段非常有效,但是当尝试将JSON数组值放入 * Multi-Select Text * 类型的字段时,此技术会失败。
当我使用类似上面的一个Jinja代码块来解析JSON的这一部分时:
"custom_fields": [
{
"key": "choices",
"value": [
"foo",
"bar",
"baz"
],
}
]
我在"多选文本"字段中得到以下3个值:x一米一纳米一x、x一米二纳米一x和x一米三纳米一x。
这就好像Quickbase/Jinja将JSON中的值解析为字符串而不是数组一样。
我的问题是-如何将上面的JSON值转换为正确的选择:foo
、bar
和baz
?
- 更新:**检查了管道的活动日志后,我发现QB从实际JSON派生的 * JSON Object * 的值为
"[u'foo', u'bar', u'baz']"
-一个字符串-这解释了表字段中出现的奇数值。
- 更新:**检查了管道的活动日志后,我发现QB从实际JSON派生的 * JSON Object * 的值为
我还发现相同的 * JSON对象 * 在属性raw_record
下有一个自身的副本,在该副本中的值是一个合理的['foo', 'bar', 'baz']
。然而,我无法在我的Jinja模板中使用raw_record
。
1条答案
按热度按时间u3r8eeie1#
在“添加批量向上插入行”步骤中的“多选”字段的值中,需要将数组转换为逗号分隔的字符串(与用于对关键字“street”进行逻辑检查的模式类似):