使用 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的JSON对象

如何生成和解析json格式数据

在javascript中循环遍历python-dictionary-turned-into-json

ajax

如何使用 JavaScript date-fns 库在特定时区格式化日期/时间

JSON 字符串转换为 JavaScript 对象