我正在尝试创建并发布以下格式的 json 消息:
var listObjects = [];
$.each(results, function(index, value){
var item = new Object();
item.title = value.Title;
item.code = value.Code;
listObjects.push(item);
});
var jsonResult = JSON.stringify(listObjects);
基本上这会像这样创建我的 json:
[{"title":"Product 1","code":123456789012},
{"title":"Product 2","code":123456789012},
{"title":"Product 3","code":123456789012},
{"title":"Product 4","code":123456789012},
{"title":"Product 5","code":123456789012},
{"title":"Product 11","code":123456789012},
{"title":"Product 12","code":123456789012},
{"title":"Product 13","code":123456789012}]
我该怎么做,如果我想向我的 json 添加一些元数据,这些元数据不会对每个项目重复,但只是在顶部......像这样:
category: x
type: y
...
items:
title: .....
code: ......
所以基本上类别和类型将定义 json 中的整个项目,但不会为每个项目重复......
最佳答案
how can I do it so that if I want to add some metadata to my json that will not repeat for each item but just at the top
使用对象作为元数据和 items
数组的包装器:
var jsonResult = JSON.stringify({
category: x,
type: y,
items: listObjects
});
我假设 x
和 y
是变量;如果它们是文字,请将它们放在引号中。
旁注:在 JavaScript 中,没有理由使用 new Object
。只需使用执行相同操作的 {}
。您还可以在其中放置属性初始值设定项,而不是事后分配给属性。这是您的 $.each
以及这些更改(和缩进):
$.each(results, function(index, value){
var item = {
title: value.Title,
code: value.Code
};
listObjects.push(item);
});
当然,您可以将它们结合起来:
$.each(results, function(index, value){
listObjects.push({
title: value.Title,
code: value.Code
});
});
最后但同样重要的是:您使用 $.each
所做的正是 $.map
所做的。用于:
var listObjects = $.map(results, function(index, value){
return {
title: value.Title,
code: value.Code
};
});
关于Javascript 创建 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18299628/