使用 javascript 创建特定格式的 json
Posted
技术标签:
【中文标题】使用 javascript 创建特定格式的 json【英文标题】:Creating json in specific format using javascript 【发布时间】:2015-10-25 10:32:12 【问题描述】:我有一个复杂的javascript代码,简化后如下..
function getjson1()
return
'json1':
id: 'jsonid1'
;
function getjson2()
return
'json2':
id: 'jsonid2'
;
myjson = [];
myjson.push(getjson1());
myjson.push(getjson2());
function finaljson()
return
'json': myjson
;
console.log(JSON.stringify(finaljson()));
现在这段代码的结果是
"json":["json1":"id":"jsonid1","json2":"id":"jsonid2"]
现在我需要更改此代码,以便我可以摆脱数组并可以遍历 json 对象,例如 json.json1.id 等。
一个例子如下..
"json":"json1":"id":"jsonid1","json2":"id":"jsonid2"
真诚感谢任何帮助。
谢谢
【问题讨论】:
你试过使用 jQuery 扩展吗? api.jquery.com/jquery.extend 我想这就是你要找的东西***.com/questions/7875070/… 谢谢,可惜不能用jquery.. 【参考方案1】:好吧,如果您不想要数组,请不要使用数组。一、基于jQuery的解决方案:
myjson = ;
myjson = $.extend(myjson, getjson1());
myjson = $.extend(myjson, getjson2());
在原生 JavaScript 中,可以使用以下函数:
function extend (target, source)
Object.keys(source).map(function (prop)
target[prop] = source[prop];
);
return target;
;
这样一来,第一个代码就变成了这样:
myjson = ;
myjson = extend(myjson, getjson1());
myjson = extend(myjson, getjson2());
【讨论】:
不能使用 jquery..,在这里尝试了你的原生 js 答案..我做错了什么..jsfiddle.net/kbvbrrjr/1 修复了,现在看这里:jsfiddle.net/kbvbrrjr/6 另外,更新了答案。【参考方案2】:你将它推送到一个数组,所以你得到一个数组。
使用这个简单的添加函数将它以您想要的格式推送到对象中。
函数返回的第一个键将是最终对象中的键。
function getjson1()
return
'json1':
id: 'jsonid1'
;
function getjson2()
return
'json2':
id: 'jsonid2'
;
function add(obj, toadd)
for(var key in toadd)
if(toadd.hasOwnProperty(key))
obj[key] = toadd[key];
break;
return obj;
myjson = ;
add(myjson,getjson1());
add(myjson,getjson2());
function finaljson()
return
'json': myjson
;
console.log(JSON.stringify(finaljson()));
【讨论】:
jsfiddle.net/mdibbets/kbvbrrjr/5 我忘了实现return语句。您制作了myjson =
,但这不是必需的。我添加了一个 return 语句来捕获这两种情况。 add 函数直接修改传入的 obj。现在它适用于这两种情况。有和没有var =
以上是关于使用 javascript 创建特定格式的 json的主要内容,如果未能解决你的问题,请参考以下文章
在javascript中循环遍历python-dictionary-turned-into-json