使用JSON的键值对

SLM*_*SLM 16 javascript jquery json

有没有办法以Key/Value对的方式使用JSON对象处理数据结构?
如果是这样,有人可以详细说明如何从密钥访问关联的值对象

假设我有类似的东西

KEY1 |  VALUE OBJECT1 - (NAME: "XXXXXX", VALUE:100.0)  
KEY2 |  VALUE OBJECT2 - (NAME: "YYYYYYY", VALUE:200.0)  
KEY3 |  VALUE OBJECT3 - (NAME: "ZZZZZZZ", VALUE:500.0)  
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 20

"JSON对象"实际上是矛盾的.JSON是描述对象而不是实际对象的文本格式,因此数据可以是JSON形式,也可以反序列化为对象.

它的JSON看起来像这样:

{"KEY1":{"NAME":"XXXXXX","VALUE":100},"KEY2":{"NAME":"YYYYYYY","VALUE":200},"KEY3":{"NAME":"ZZZZZZZ","VALUE":500}}
Run Code Online (Sandbox Code Playgroud)

一旦将JSON解析为Javascript对象(data在下面的代码中调用),您就可以访问该对象,KEY2并且它的属性如下:

var obj = data.KEY2;
alert(obj.NAME);
alert(obj.VALUE);
Run Code Online (Sandbox Code Playgroud)

如果您将密钥作为字符串,则可以使用索引表示法:

var key = 'KEY3';
var obj = data[key];
Run Code Online (Sandbox Code Playgroud)

  • JSON是一个缩写.将实例称为"JSON对象"可以获得非常清晰和简洁的引用.它肯定不是任何公认的"矛盾"定义的"矛盾".JavaScript对象和JSON不是一回事:JavaScript Object Notation是一种"符号"而不是JavaScript对象.它是JSON"对象"吗?当然是啦. (5认同)

Rob*_*itt 10

var object = {
    key1 : {
        name : 'xxxxxx',
        value : '100.0'
    },
    key2 : {
        name : 'yyyyyyy',
        value : '200.0'
    },
    key3 : {
        name : 'zzzzzz',
        value : '500.0'
    },
}
Run Code Online (Sandbox Code Playgroud)

如果这就是你的对象看起来如何,你想循环每个名称和值,那么我会尝试做类似的事情.

$.each(object,function(key,innerjson){
    /*
        key would be key1,key2,key3
        innerjson would be the name and value **
    */

    //Alerts and logging of the variable.
    console.log(innerjson); //should show you the value    
    alert(innerjson.name); //Should say xxxxxx,yyyyyy,zzzzzzz
});
Run Code Online (Sandbox Code Playgroud)


jAn*_*ndy 8

JSON(= Ĵ AVA 小号 CRIPT ö bject Ñ浮选),是一种重量轻,快速机制转换JavaScript对象到字符串中,反之亦然.

由于Javascripts对象由key/value对组成,因此非常易于使用并以这种方式访问​​JSON.

所以,如果我们有一个对象:

var myObj = {
    foo:   'bar',
    base:  'ball',
    deep:  {
       java:  'script'
    }
};
Run Code Online (Sandbox Code Playgroud)

我们可以通过调用window.JSON.stringify(myObj);结果将其转换为字符串"{"foo":"bar","base":"ball","deep":{"java":"script"}}".

反过来,我们会打电话window.JSON.parse("a json string like the above");.

JSON.parse() 成功返回javascript对象/数组.

alert(myObj.deep.java);  // 'script'
Run Code Online (Sandbox Code Playgroud)

window.JSON在所有浏览器中都不是原生的.一些"旧"浏览器需要一个小javascript插件,它提供上述功能.有关详细信息,请访问http://www.json.org.


Cra*_*gen 5

我明白你想问什么,我认为这是你正在寻找的最简单的答案,因为你可能不知道你被发送了多少个密钥对。

简单密钥对 JSON 结构

var data = {
    'XXXXXX' : '100.0',
    'YYYYYYY' : '200.0',
    'ZZZZZZZ' : '500.0',
}
Run Code Online (Sandbox Code Playgroud)

使用 JavaScript 代码访问密钥对

for (var key in data) 
  { if (!data.hasOwnProperty(key))
    { continue; } 
    console.log(key + ' -> ' +  data[key]);
  };
Run Code Online (Sandbox Code Playgroud)

控制台输出应该如下所示

XXXXXX -> 100.0 
YYYYYYY -> 200.0 
ZZZZZZZ -> 500.0
Run Code Online (Sandbox Code Playgroud)

这是一个JSFiddle来展示它是如何工作的。