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

JavaScript中如何构造正确格式的嵌套结构Payload?

问题描述

我尝试了以下代码但无法正常运行:

let sourceIPAddress = "10.255.0.8/32"
let destinationIPAddress = "10.255.0.0/32/32"

let filterAddValue = 
`{'filter-name':'SessionFilter','source-ip': '${sourceIPAddress}','destination-ip':'${destinationIPAddress}'}`

const filterAdd =
{
  "filter-add":filterAddValue
}
const filterAddStringify = JSON.stringify(filterAdd);

运行后返回错误信息:"error-message": "No default namespace has been defined."

生成的错误Payload如下:

错误Payload

{"filter-add": "{'filter-name':'SessionFilter','source-ip': '10.255.0.8/32','destination-ip':'10.255.0.0/32'}"}

该Payload中filter-add的值是被双引号包裹的字符串,而正确的Payload要求filter-add的值为嵌套对象,格式如下:

正确Payload

{"filter-add":{"filter-name":"SessionFilter","source-ip":"10.255.0.8/32","destination-ip":"10.255.0.0/32"}} 

请问如何在JavaScript中生成完全符合上述正确格式的Payload?

解决方案

问题根源是你手动拼接了JSON格式的字符串,导致filter-add的值被识别为字符串类型,而非嵌套对象。正确做法是直接构造JavaScript嵌套对象,再用JSON.stringify()序列化,即可生成标准的目标Payload。

修改后的代码如下:

let sourceIPAddress = "10.255.0.8/32";
let destinationIPAddress = "10.255.0.0/32"; // 原代码中多了一个冗余的/32,这里做了修正

// 直接构造嵌套结构的对象
const filterAdd = {
  "filter-add": {
    "filter-name": "SessionFilter",
    "source-ip": sourceIPAddress,
    "destination-ip": destinationIPAddress
  }
};

const filterAddStringify = JSON.stringify(filterAdd);

关键说明

  1. 放弃手动拼接字符串的方式,直接用JavaScript对象结构映射目标Payload的层级,filter-add字段的值是一个嵌套对象。
  2. JSON.stringify()会自动将对象序列化为标准JSON格式,自动用双引号包裹所有键和字符串值,完全匹配正确Payload的格式要求。

内容的提问来源于stack exchange,提问作者user2459924

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:51:10