【问题标题】:how to store JSON data into key-value pairs in javascript?如何将 JSON 数据存储到 javascript 中的键值对中?
【发布时间】:2015-04-24 15:30:56
【问题描述】:

如何在 javascript 中将 JSON 数据存储到键值对中?

我有一个 json 数据文件:data.js 它包含以下数据

[
    { "Sound": "0.550951615" },
    { "Battery": 0.2567320563 },
    { "Screen": 0.0703125 },
    { "RAM": 0.1246117102 },
    { "Connectivity": 0 },
    { "Camera": 0.2721623766 },
    { "Design": 0.3677622768 },
    { "Processor": 0 }
]

如何将这些数据存储在 java 脚本中的键值对数据结构中?

【问题讨论】:

  • 这几乎就像是为它而生的,JSON 是 JavaScript 对象表示法等等?
  • 已经是key:value了。
  • 其实我有一个 json 文件,我想访问那个 json 中的每个数据字段,,,怎么做?

标签: javascript html json web


【解决方案1】:

您可以使用Array.mapArray.reduce(请参阅MDN)将数组元素映射到一个对象,例如:

var objmap = {}, objred = {};
// parse the string (from your file)
var objFromFile =
  JSON.parse('[\
      { "Sound": "0.550951615" },\
      { "Battery": 0.2567320563 },\
      { "Screen": 0.0703125 },\
      { "RAM": 0.1246117102 },\
      { "Connectivity": 0 },\
      { "Camera": 0.2721623766 },\
      { "Design": 0.3677622768 },\
      { "Processor": 0 }\
  ]');
// and map it to [obj]
var mapped = objFromFile.map( 
                function (v) { for (var l in v) {this[l] = v[l];} }, 
                objmap
             );
// or use reduce if you prefer it
var reduced = objFromFile.reduce( 
                 function(p, n) { 
                   for (var l in n) {p[l] = n[l];} 
                   return p;
                 },
                 objred
              );

// show the result, using JSON.stringify
document.querySelector('#result').textContent = 
  'mapped:\n' + JSON.stringify(objmap, null, ' ') +
  '\n\nreduced:\n' +  JSON.stringify(objred, null, ' ');
<pre id="result"></pre>

【讨论】:

  • 如果我在一段代码中看到Array.map,我仍然期待返回一个值数组 - Array.reduce 会更干净(使用第二个参数)。
  • @Digigizmo:你真的尝试过使用reduce吗?
【解决方案2】:

JSON 代表 JavaScript 对象表示法。这是存储数据的系统语法。

用于存储单个值:

var Object1 = {
  "Key": "Value"
}

用于存储多个值:

var Object1 = {
  "Key1": "Value1",
  "Key2": "Value2",
  "Key3": "Value3",
  "nth key": "nth value"
}

【讨论】:

    【解决方案3】:

    你需要处理你的数据结构来完成这项工作。

    var a = [
        { "Sound": "0.550951615" },
        { "Battery": 0.2567320563 },
        { "Screen": 0.0703125 },
        { "RAM": 0.1246117102 },
        { "Connectivity": 0 },
        { "Camera": 0.2721623766 },
        { "Design": 0.3677622768 },
        { "Processor": 0 }
    ]
    var keyValue = {}
    a.forEach(function(e) {
        keyValue[Object.keys(e)[0]] = Object.values(e)[0]
    })
    

    console.log(keyValue)的输出

    {"Sound":"0.550951615","Battery":0.2567320563,"Screen":0.0703125,"RAM":0.1246117102,"Connectivity":0,"Camera":0.2721623766,"Design":0.3677622768,"Processor":0}
    

    【讨论】:

      【解决方案4】:
      var myObject = { 
       key: value,
       key: value
       };
      

      您实际上只是以该格式列出您的内容。

      其他资源: http://www.w3schools.com/js/js_objects.asp

      How to "properly" create a custom object in JavaScript?

      【讨论】:

        【解决方案5】:

        您已经将数据存储为 key:value。

        如果您想知道如何访问数据的各个部分,请查看这篇文章:JavaScript loop through json array?

        或者...

        您可以通过索引找到特定的 k:v 对。在您的情况下,如果您将有效负载存储在变量中,您可以像这样访问数据:

        var data = [
            { "Sound": "0.550951615" },
            { "Battery": 0.2567320563 },
            { "Screen": 0.0703125 },
            { "RAM": 0.1246117102 },
            { "Connectivity": 0 },
            { "Camera": 0.2721623766 },
            { "Design": 0.3677622768 },
            { "Processor": 0 }
        ]
        
        data[0]
        

        这将返回 { "Sound": "0.550951615" }

        有大量资源可供您搜索 JSON 参考。

        祝你好运!

        【讨论】:

        • 谢谢,实际上我想访问 json 数据中的每个文件,如何做到这一点?
        • 我在答案中提到的链接有几个关于如何遍历数据数组的示例......我不太确定我是否理解你的要求,如果那个帖子没有不回答你的问题。
        猜你喜欢
        • 2014-10-30
        • 1970-01-01
        • 2018-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-11
        • 1970-01-01
        相关资源
        最近更新 更多