【问题标题】:Creating json in specific format using javascript使用 javascript 创建特定格式的 json
【发布时间】: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"}}}

真诚感谢任何帮助。

谢谢

【问题讨论】:

标签: javascript


【解决方案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());

【讨论】:

【解决方案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 =
猜你喜欢
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
相关资源
最近更新 更多