使用动态键和值动态创建 JSON
Posted
技术标签:
【中文标题】使用动态键和值动态创建 JSON【英文标题】:Create JSON dynamically with dynamic keys and values 【发布时间】: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 错误..代码工作正常。 你能帮帮我吗? 你的用例是什么? 【参考方案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 不支持以上是关于使用动态键和值动态创建 JSON的主要内容,如果未能解决你的问题,请参考以下文章