一般数据类型有以下几种类型(区分JS数据类型):
1,标量(scalar),也就是一个单独的字符串(string)或数字(number)
2,序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组
3,映射(mapping),也就是一个名/值对(Name/value)

JS的数据类型有以下几种:
1,String,
2,Number
3,Boolean
4,Undefined
5,Null
6,Symbol
7,Object->Array,Function,Date,Error,...

JSON 支持的格式没有symbol和undefined,支持Number类型但不含NaN;

JSON 语法规则:

1,数据在名称/值对中
2,数据由逗号分隔
3,花括号保存对象
4,方括号保存数组
JSON的名称必须是用“ ”包含的也就是“string”;

所以JSON只是一个数据格式,这种格式也分三种:

1,JSON字符串 可以这么写但不是合法的JSON数据(目的只是作为字符串便于传递)
下面数组和对象要转换为这种格式

var json = '{"name" : "obama","age": 73}';       

2,JSON数组

var jsonArray = ["obama","bush","cliton",null];

3,JSON对象

var jsonObj = {
    "name" : "obama",
    "age" : 73
}

以上三种都是JSON格式的数据类型;

但在一般程序中作为数据传递的话,一般都是作为文本Text传递的较多,也就是字符串,因此有专门的方法,

var json = '{"name" : "obama","age" : 73 }';
    //如果直接使用的话,得到的只是一个字符串,因此需要转化为Object;
    //json.name  -> undefined
    
var jsonStr = eval("("+json+")");
    
    //之所以在eval函数的内部在添加一个括号,如果没有的话,函数会直接解析掉外部的大括号,最终报错,这不是一个好的方法;
    //使用es5的方法
    
var jsonStr = JSON.parse(json);    //{"name" : "obama","age" : 73}
 jsonStr.name = 'obama';

    //或者将JSON对象转换为字符串,便于使用
var jsonObj = {
    "name" : "obama",
    "age" : 73
}
var jsonStr = JSON.stringify(jsonObj);    //"{"name":"obama","age":73}";

typeof jsonStr ==='string'    //true

//需要注意的是使用JSON方法得到的都是深度拷贝,是两个不同的数据,

scupture
35 声望1 粉丝

var me = 'missing you';