You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将标签列表转换为API要求的JSON字符串格式?

解决API提交时标签数组字符串格式问题

你的问题核心是API要求value字段必须是JSON数组字符串(例如"[\"tag1\",\"tag2\"]"或"[]"),但当前代码直接将拆分后的标签列表赋值给value,经过json.dumps序列化后,value会被处理成JSON数组而非字符串形式,不符合API的格式要求。

修改方案

只需要对拆分后的标签列表再执行一次JSON序列化,将其转换为字符串格式后再赋值给value字段即可。同时额外处理空标签的边界情况,避免出现[""]的无效数组:

import requests
import json
from bs4 import BeautifulSoup

with open('essentie_metadata.xml', 'r') as f:
    data = f.read()

Bs_data = BeautifulSoup(data, "lxml")

all_results = Bs_data.findAll('record')
for child in all_results:
    print(child.find("id").text)
    if child.find("type").text == "document":
        id = child.find("id").text

        url = "https://site.nl/api/nodes/" + id + "/metadata"

        trefwoorden = child.find("trefwoorden").text.split("*")
        # 处理空标签:拆分后得到[""]时转为空数组
        if trefwoorden == [""]:
            trefwoorden = []
        
        # 将标签列表转为JSON数组字符串
        value_str = json.dumps(trefwoorden)

        payloadtw = json.dumps([
          {
            "name": "Trefwoorden",
            "value": value_str,
            "updateOperation": "replace"
          }
        ])

        headers = {
          'accept': 'application/json',
          'Authorization': 'Bearer token',
          'Content-Type': 'application/json'
        }

        response = requests.request("PUT", url, headers=headers, data=payloadtw)

关键说明

  1. JSON字符串转换:通过json.dumps(trefwoorden)把列表转成JSON格式的字符串,这样最终payload里的value就会是API要求的"[\"tag1\",\"tag2\"]"或"[]"形式。
  2. 空标签处理:当<trefwoorden>标签为空时,split("*")会返回[""],手动转为空数组后,生成的JSON字符串就是"[]",符合API的空值要求。

内容的提问来源于stack exchange,提问作者Henk Van Der Pol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:15:17