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

AngularJS动态构建嵌套JSON并POST时字段为空问题求助

解决AngularJS中构建嵌套JSON对象的问题

嘿,我一眼就看到问题出在哪了——你完全没必要用字符串拼接的方式把team和location对象塞进entry里!这正是导致它们变成null的核心原因。

错误原因分析

在JavaScript里,当你尝试把一个对象和字符串做拼接时,对象会被自动转换成字符串"[object Object]"。再加上你写的+ "\"{" + team + "}\"",前面的+号会试图把这个拼接出来的字符串转成数字,结果自然是NaN。而angular.toJson在处理NaN时会将其转为null,所以你的team和location字段就变成了null。

正确的写法

在JavaScript(包括AngularJS)中,构建嵌套JSON对象非常简单——直接把已定义的对象作为属性值赋值即可,不需要任何字符串拼接操作:

var team = { "id": "1", "teamName": "TeamName" };
var location = { "id": "1", "name": "Name" };
var entry = { 
  "duration": "40", 
  "dateTime": "949417200000", 
  "team": team,  // 直接赋值对象,无需字符串转换
  "location": location  // 同理,直接嵌套对象
};

// 现在再打印就能得到正确的嵌套JSON了
console.log(angular.toJson(entry));

优化建议(匹配目标JSON结构)

你最初要POST的JSON里,duration和dateTime是数字类型,而你当前代码里是字符串。如果需要严格匹配结构,可以把这两个字段改成数字:

var entry = { 
  "duration": 40,  // 去掉引号,转为数字
  "dateTime": 949417200000,  // 同样转为数字类型时间戳
  "team": team,
  "location": location
};

执行上述代码后,angular.toJson(entry)会输出完全符合你需求的嵌套JSON:

{"duration":40,"dateTime":949417200000,"team":{"id":"1","teamName":"TeamName"},"location":{"id":"1","name":"Name"}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:50:56