一、首先看下什么是JSON

JSON:JavaScript Object Natation,JavaScript对象的表现形式,已经发展成一种轻量级的数据交换格式。

JavaScript对象的表现形式,指定义JS对象的一种方式。
数据交换格式,即用于交换的数据格式。

JSON是种格式:

数据在键值对中, 数据由逗号分隔, 花括号保存对象, 方括号保存数组.
键值对组合中的名称写在前面,值对写在后面,中间用冒号隔开
JSON 值可以是: 数字, 字符串, 逻辑值, 数组, 对象, null

JSON与XML相比,JSON更轻量级,XML更重量级,目前XML更多的用作配置文件。

 

二、再来看下什么是javascript对象

虽然有人说JavaScript 中的所有事物都是对象,但是 javascript 中,并不是所有的值都是对象,而有两种值类型:原始值和对象。
(参考:http://blog.csdn.net/justjavac/article/details/8432989 JavaScript 并非所有的东西都是对象)

JavaScript原始值:
字符串,数字,布尔值,null,正则表达式
注:在 JavaScript 中所有的数字都是浮点数

JavaScript内置对象:
Object(基础对象),
Array(数组),
Function(函数构造器),
Math(数学对象),
String(字符串对象),
Number(数值对象),
Boolean(布尔对象),
Date(日期时间),
Error(异常对象),
RegExp(正则表达式对象),
Arguments(函数参数集合)
(参考:http://www.cnblogs.com/lianzi/archive/2011/08/26/2154253.html javascript内置对象列表及Array和String的常用方法)

其中 Boolean, Number, String 是原始值的包装器,很少直接使用

JavaScript 创建对象的方法:
1)使用内置对象
var person=new Object();//创建基础对象实例,然后为其添加属性
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
2)自定义对象构造
function Person(firstname,lastname,age){//自定义对象构造器,然后创建实例
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
}
var person=new Person("Bill","Gates",56);
//定义对象构造器,可以使用“this”关键字构造、也可以使用原型prototype构造
(参考:http://www.jb51.net/article/20428.htm JavaScript 三种创建对象的方法)
3)使用直接量(literals 有直接量、字面量、常量等词义)
var arr = [obj.a, 0, obj.a+1];
var obj = {name: 'John' + 'McCarthy'};

注:
准确的说不叫直接量(literals),而叫初始器(Initialiser),可以在里面使用表达式
初始器有对象和数组两种,所以有“对象直接量”,“数组直接量”这样的说法

初始器基于JSON,要符合JSON语法格式,
因此有人说JSON是JavaScript的原生格式,
在JavaScript中处理JSON数据不需要任何特殊的API或者工具包

但是初始器里面是可以有表达式的,就像例子里的一样
(参考:http://www.cnblogs.com/snandy/p/3439790.html JavaScript中的直接量与初始器的区别)

原始值只包括字符串,数字,布尔值,null,正则表达式,不包括 Undefined 和 Initialiser

三、JavaScript对象、JSON对象、JSON字符串

javascript对象:javascript中,除开JavaScript原始值(字符串,数字,布尔值,null,正则表达式)的都是javascript对象

JSON对象:JSON对象这种叫法不太准确,可以理解为使用基于JSON的初始器定义的javascript对象

JSON字符串:符合JSON语法格式的字符串

javascript对象和JSON字符串相互转换:
1:jQuery插件支持的转换方式
$.parseJSON( jsonstr );$("xxx").serializeArray();
2:浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器
JSON.parse(jsonstr);JSON.stringify(jsonobj);
3:Javascript支持的转换方式
eval('(' + jsonstr + ')');//不推荐
4:JSON官方的转换方式
引入 json.js 或 json2.js,用法同第二种
(参考:http://www.cnblogs.com/luminji/p/3617160.html JS中对象与字符串的互相转换)

JAVA对象和JSON字符串相互转换:
可以用jackson、Gson和json-lib等
(参考:http://www.blogjava.net/bolo/archive/2014/04/16/412533.html 使用jackson对Java对象与JSON字符串相互转换的一些总结)

JSON在线工具集:

http://www.bejson.com/

转载于:https://www.cnblogs.com/guodefu909/p/JavaScript_JSON.html

JavaScript对象、JSON对象、JSON字符串的区别相关推荐

  1. Json对象和Json字符串以及js对象(JavaScript对象)的区别

    1.Json概念 概念:JSON (JavaScript Object Notation) 一种简单的数据格式,是一种比较轻量级的数据存储格式: 2.Json与JS对象的对比 区 别 JSON Jav ...

  2. 十分钟搞懂JSON(JSON对象---JSON字符串---对象 之间的区别)

    好记性不如烂笔头,相信我,看了之后你会彻底搞懂JSON 前言:前天被JSON对象,JSON字符串,JAVA对象搞混了,不知道各自代表的意思,我就查了资料,总结为一篇博文. 另外我想List<Us ...

  3. JSON | JSON字符串和JSON对象的区别

    最近在学习Vue.js,里面有个存储.读取本地缓存的功能,不停地用JSON.parse(),和JSON.stringify()来转换JSON字符串和JSON对象.自己有点晕,不明白两者的区别,看起来感 ...

  4. 内置对象的API Array数组对象 String字符串对象 json字符串 JSON对象 js作用域及变量预解析 引用类型与值类型区别 共享引用 基本包装类型 数组去重

    01-内置对象的API a.Date对象获取时间 b.Array对象数组加工 c.String对象字符串加工 d.json字符串的语法格式 e.JSON对象的字符串与对象转换应用 02-JS作用域 a ...

  5. ajax中json和文本的区别,json格式字符串--json对象 【ajax_responseText】重点

    JSON.parse(string) JSON.Stringify(object)document.getElementById("id").value=jsonObj    // ...

  6. JavaScript的JSON转变函数parse[转化为对象] stringfy[转化为字符串]

    创建一个对象数组:使用parse会把字符串转化为对象 var sites = [{ "name":"runoob", "url":" ...

  7. JSON字符串与JSON对象的区别

    JSON JavaScript Object Notation是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式. json可以以数组传递,也可以以对象传递. 在数据传输流 ...

  8. json字符串,JSON对象,JSON数组的区别与相互转换

    JSON数组,json字符串,JSON对象,数组的区别与基本操作整理 JSON对象是直接可以使用JQuery操作的格式 JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据, ...

  9. 【小程序】【Tips】【实践】Json 的对象 和 Json字符串 的区别和转换

    前言:本文,实践打印两种不同格式的json文件的表示方式: 1 JSON.parse()与JSON.stringify()的区别 https://www.cnblogs.com/goatling/p/ ...

最新文章

  1. python键_在Python中创建键命令
  2. mysql 存储过程 百万数据 innodb_详解mysql数据库一键查看锁信息(开启InnoDB监控)...
  3. Asp.Net细节性问题技巧精萃(转载)
  4. 如何获得C4C里某个code字段对应的描述信息
  5. 【FZU - 2039】Pets(二分图匹配,水题)
  6. linux更改nginx最大访问数,Linux下nginx服务的配置文件nginx.conf中模块的讲解之配置limit_conn_zone来限制并发连接数以及下载速率...
  7. 自制 移动端 纯原生 Slider滑动插件
  8. aes解密算法 java_AES算法实现Java和JS互通加解密
  9. java 防重复提交_Java中如何避免重复提交请求
  10. 虚拟软盘启动OS方法
  11. 文件描述符 fd 究竟是什么?
  12. Ansys-瞬态热分析-水箱学习收获
  13. elasticsearch的查询器query与过滤器filter的区别
  14. 利用html和js输入数字转换为中文大写示例。
  15. JavaWeb 获取客户端的真实IP地址
  16. office2010 安装时,报错:1920 未能启动服务 “Office Software Protection Platform”(osppsvc)...终极解决方案
  17. winform 分页打印实例
  18. 手机连接Linux教程,手机密钥连接linux主机
  19. fedora11 文泉驿micro-hei字体设置
  20. 大数据处理系统都有哪些?(数据查询分析计算系统篇)

热门文章

  1. 家长必读:不想逼孩子,你应该这样做
  2. GitHub中watch、star、fork的作用
  3. [转]ORACLE 异常错误处理
  4. lr中winsock协议的脚本(转载51testing)
  5. highgui java opencv_java – OpenCV 3.0.0 JAR缺少HighGUI
  6. Comet OJ - Contest #0题解
  7. [Linux环境]-centos7下安装jdk1.8.0_141流程.
  8. [转]CentOS 7忘记root密码解决办法
  9. Java基础 深拷贝浅拷贝
  10. poj3685 二分套二分