JSON 对象 & JSONObject

JSON 语法是 JavaScript 对象的表达方式,我们又简单的分为JSONObjectJSONArray 其实都是JSON 对象的表达方式,只是从结构上做了区分。

PS:如果您是要得到JavaJSON-LibJSONObject 的相关信息,请点击这个链接==>JSONObject

JSON 对象语法规则

  • 数据在名称/值对中,如{"domain":"sojson.com"}
  • 可以多对键值对,如{"domain":"sojson.com","author":"soゝso","email":"i@itboy.net"}
  • 值里面可以有数组(Array),如{"domain_array":["sojson.com","soso.pub","soso.run","isoso.xin","isoso.xin"]}

JSON 对象

JSON 对象在花括号中,对象可以包含多个名称/值对,如下代码所示:

{
    "name": "本兮",
    "age": 22,
    "birthday": "1994年6月30日",
}

这一点也容易理解,与这条 JavaScript 语句等价:

name = "本兮";
age = 22;
birthday = "1994年6月30日";

在上面的例子中,对象 "star_male" 是包含三个对象的数组。每个对象代表一条关于一个明星(姓名和年龄)的记录。

JSON 使用 JavaScript 获取元素值

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON

栗子🌰:

var json =  {
        "name": "本兮",
        "age": "22"
}

获取name和age:

var name = json.name;
alert("name:" + json.name);
var age = json.age;
alert("age:" + json.age);

JSON 特殊Key,Number篇(1)

当我们对象里有特殊的Key,或者不是字符串的Key,处理起来稍微有点麻烦。

就上面的Demo,我们取name,那么就是json.name就可以取到“本兮”。其实很好理解这个点“.”就是类似于“的”的感觉,json的name。这么理解是不是很好理解?

那么问题来了,如果JSON如下数据,你们可以试试。

var json = {
    "1": {
        "name": "本兮",
        "age": "22"
    },
    "2": {
        "name": "关晓彤",
        "age": "20"
    }
};
alert(json.1.name);// X 错误 throw Uncaught SyntaxError;

按我们刚刚的逻辑直接点,那么我们要取到“关晓彤”就应该是。json.1.name吧,但是你会发现报错,错误信息应该是Uncaught SyntaxError,语法错误,请自行测试,那么正确应该怎么获取呢?

//正确的打开姿势如下:
alert(json[1].name);
alert(json["1"].name);
alert(json["1"]["name"]);
//错误,undefined
alert(json["1"][name]);

其实上面看出了一个问题,那么就是数值可以不带引号,String必须带引号,再次强调:严格来讲是双引号,个别弱语言支持单引号。

JSON 特殊Key,Number篇(2)

严格来讲是双引号,个别弱语言支持单引号。还有一个问题就是,弱语言除了String类型,其他的明确类型不用单引号或者双引号。把上面的Demo在弱语言里可以这么写,比如在Javascript中可以这么写,没有任何瑕疵。

var json = {
    1: {
        "name": "本兮",
        "age": "22"
    },
    2: {
        "name": "关晓彤",
        "age": "20"
    }
}

我们再来尝试获取一次。

结果已经看到了,其实没问题,所以要区分强弱语言的问题,建议还是强烈要求自己,按规范来,这样肯定没毛病。

注意:其他的我就不多说了,其实都是一样,比如boolen类型的Key,null类型的Key都是一样的处理方式。

版权所属:SOJSON(原创文章)

原文地址:https://www.sojson.com/json/json_object.html

转载时必须以链接形式注明原始出处及本声明。

支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...