【问题标题】:Create JSON dynamically with dynamic keys and values使用动态键和值动态创建 JSON
【发布时间】:2017-06-27 15:32:36
【问题描述】:

我是一名初学者,正在尝试从 HTML 输入文本的数据提取中创建以下 JSON。如何创建和访问以下 JSON?

{  
  Brazilians**{
    John**{
      old: 18
    }

    Jones**{
      old: 20
    }
  }

  Canadians**{

    Friedman**{
      old: 22
    }

    James**{
      old: 35
    }
  }
}

注意:** 表示它必须是动态键。

我的 HTML 代码:

<input type="text" id="nacionality">
<input type="text" id="name">
<input type="text" id="old">

我尝试用javascript开发的结构:

obj[nationality] = name[{old : oldValue}];

alert(obj["Brazilians"]["John"].old);

【问题讨论】:

  • 您的 json 错误..代码工作正常。
  • 你能帮帮我吗?
  • 你的用例是什么?

标签: javascript html json object


【解决方案1】:

这样的?

var obj = {};
obj[document.getElementById('nationality').value] = {};
obj[document.getElementById('nationality').value][document.getElementById('name').value] = {
  old: document.getElementById('old').value
};
console.log(obj);
<input type="text" id="nationality" value="Brazilian" />
<input type="text" id="name" value="John" />
<input type="text" id="old" value="18" />

【讨论】:

  • 只是一个旁注它是nacionality - 来自原始问题。
  • 对。但是这个词在英语中并不存在。
  • old 和 name 是英文单词,所以我以为他的本意是国籍
【解决方案2】:

您应该使用您的详细信息创建一个对象。您可以使用Immediately-invoked function expression 创建它。

obj[nationality]=(function(){
   var obj1={};
   obj1[name]={
       old:parseInt(old)
   };
   return obj1;
})();

var obj={  
  Brazilians:{
    John:{
      old: 18
    }
    ,
    Jones:{
      old: 20
    }
  }
  ,
  Canadians:{

    Friedman:{
      old: 22
    }
    ,
    James:{
      old: 35
    }
  }
}
function add(){
   var nationality=document.getElementById('nacionality').value;
  var name=document.getElementById('name').value;
  var old=document.getElementById('old').value;
  obj[nationality]=(function(){
      var obj1={};
      obj1[name]={ 
            old:parseInt(old)
      };
      return obj1;
  })();
  console.log(obj);
}
<input type="text" id="nacionality">
<input type="text" id="name">
<input type="text" id="old">
<button onclick="add()">Add</button>

【讨论】:

    【解决方案3】:

    您的 JSON 代码有误,应该是这样的:

    {
        "Brazilians":[
            John:{ old: 18 },
            Jones:{ old: 20 }
        ],
        "Canadians":[
            Friedman:{ old: 22 },
            James:{ old: 35 }
        ]
    }
    

    【讨论】:

      【解决方案4】:

      在 json 中制作动态道具 [prop]

      function dynmObj (a, b){
          var json ={
            [a] : b
          } 
          return json;
      }
      

      【讨论】:

      • 仅 IE11 不支持
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2021-12-02
      • 2021-11-10
      • 2020-03-01
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      相关资源
      最近更新 更多