使用动态键和值动态创建JSON

时间:2017-02-09 14:52:11

标签: javascript html json object

我是初学者,我正在尝试创建以下JSON来自HTML输入文本的数据提取。如何创建和访问以下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);

4 个答案:

答案 0 :(得分:4)

这样的东西?

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

答案 1 :(得分:2)

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

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

&#13;
&#13;
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);
}
&#13;
<input type="text" id="nacionality">
<input type="text" id="name">
<input type="text" id="old">
<button onclick="add()">Add</button>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

你的JSON代码错了,应该是这样的:

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

答案 3 :(得分:-1)

在json中制作动力道具你[prop]

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