使用动态键和值动态创建 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的主要内容,如果未能解决你的问题,请参考以下文章

如果将来添加任何键,json如何解析动态键和值

在我的屏幕中显示动态填充对象的每个键和值 - React

在for循环内设置动态键和值[重复]

如何动态创建字典和添加键值对?

如何在 ngFor 中显示一个简单 json 的所有键和值? [复制]

React 组件在来自 JSON 对象的选项卡中呈现动态内容