【问题标题】:is it posssible to push json into another json inside function是否可以将 json 推送到另一个 json 内部函数中
【发布时间】:2018-01-22 04:29:57
【问题描述】:

我在将新json插入旧json时遇到问题,已尝试找到但我不知道正确的关键字,

假设我在 foo1.js 上有一个 json:

function jsonapi(){
  var ItemJSON = {
    "salutation":"foo1"
    ,"location":"foo2"
    ,"reference_code":"foo3"
  }
}

foo2.js

jsonapi();
var json = {
  ,"isCustomer":"foo4"
  ,"email_to":"foo5"
  ,"phone":"foo6"
}

Goal :

{
  "salutation":"foo1"
  ,"location":"foo2"
  ,"reference_code":"foo3"
  ,"isCustomer":"foo4"
  ,"email_to":"foo5"
  ,"phone":"foo6"
}

有办法实现我的目标吗?

【问题讨论】:

  • 这不是 JSON。是否可以“合并 JavaScript 对象”?是的。当然,同时访问两个对象几乎是一个先决条件(即返回第一个对象,传入第二个对象,使用全局变量或其他组合)..然后它只是f(obj1, obj2) 其中f 是“合并”所述对象的函数;同样,obj1obj2(在所示代码中都不是 JSON)同时可用
  • 不,你不能将一个字符串推入一个字符串(很容易)
  • @JaromandaX 问题中没有 JSON 字符串。
  • @user2864740 - 我知道 - 但标题和问题不断重复JSON

标签: javascript json


【解决方案1】:

问题在于函数内部的变量声明。

尝试如下。

将变量声明为全局变量并在函数中更新。

foo1.js

var itemJSON = {};

function jsonapi(){
   itemJSON = {
     "salutation":"foo1",
     "location":"foo2",
     "reference_code":"foo3"
   }
}

foo2.js

jsonapi();
var json = {
  "isCustomer":"foo4",
  "email_to":"foo5",
  "phone":"foo6"
};

使用Object.assign 组合两个对象。

let output = Object.assign(itemJSON, json);
console.log(output);

另一种方式:

foo1.js 中的函数返回数据。

foo1.js

function jsonapi(){
   return {
     "salutation":"foo1",
     "location":"foo2",
     "reference_code":"foo3"
   }
}

foo2.js

var itemJSON = jsonapi();
var json = {
  "isCustomer":"foo4",
  "email_to":"foo5",
  "phone":"foo6"
};

let output = Object.assign(itemJSON, json);
console.log(output);

【讨论】:

    【解决方案2】:

    这里有一个相当全面的答案:How to join two JavaScript Objects, without using JQUERY

    但是,从上面的链接中窃取了第一个答案:

    var result = {};
    for(var key in obj1) result[key] = obj1[key];
    for(var key in obj2) result[key] = obj2[key];
    

    【讨论】:

      【解决方案3】:

      这是一个使用 Javascript .concat 方法的示例。

      更多@Array.prototype.concat()

      var array1 = [
      {
      "name":"salutation",
      "value":"foo1"
      },
      {
      "name":"location",
      "value":"foo2"
      },
      {
      "name":"reference_code",
      "value":"foo3"
      }
      ];
      
      var array2 = [
      {
      "name":"isCustomer",
      "value":"foo4"
      },
      {
      "name":"email_to",
      "value":"foo5"
      },
      {
      "name":"phone",
      "value":"foo6"
      }
      ];
      
      console.log(array1.concat(array2));

      【讨论】:

        【解决方案4】:

        你使用jsonapi作为函数,所以如果你想得到那个函数值你需要返回数据!!!来看看Object.assign是如何工作的......

        Object.assign() 方法用于将所有可枚举自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

        function jsonapi(){
           return {
            "salutation":"foo1","location":"foo2","reference_code":"foo3"
          };
        }
        
        var ItemJSON = jsonapi();
        
        var json = {
          "isCustomer":"foo4"
          ,"email_to":"foo5"
          ,"phone":"foo6"
        }
        
        var result = Object.assign({},ItemJSON, json);
        console.log(result);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-30
          • 1970-01-01
          • 2021-02-13
          • 1970-01-01
          • 2014-06-27
          • 2014-03-08
          • 2020-04-22
          • 1970-01-01
          相关资源
          最近更新 更多