定义
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。
格式
JSON和 XML一样,也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。
如:
1 字符串 “abc”
2 整数 123
3 浮点数 -123.1
4 数组 -- json可以表示一个数组对象,使用 []
包含所有元素,每个元素用逗号分隔
["abc",12345,false,null]
[ { "city":"Beijing" },{ "street":" Chaoyang" },{ "postcode":100025 } ]
5 Object 对象在 JSON 中是用 {}
包含一系列无序的 Key-Value 键值对表示的
{"city":"Beijing","street":" Chaoyang","postcode":100025}
其中 Value 也可以是另一个 Object 或者数组,因此,复杂的 Object 可以嵌套表示
{employee : { firstName: "John", lastName : "Doe", employeeNumber : 123,title : "Accountant" } }
实现从.json文件中读取数据
1 在main/resources目录下编写PEData.json文件
2 简单的java代码
//getResourceAsStream方法首先搜索资源的父类加载器;如果父类加载器为 null,则搜索的路径就是虚拟机的内置类加载器的路径。如果搜索失败,则此方法将调用 findResource(String) 来查找资源。
//如:file:/D:/hty/htyWork/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/htybg/WEB-INF/classes/PEData.json
private static String JsonContext = ReadFile(PEData.class.getClassLoader().getResourceAsStream("PEData.json"));//读取JSON文件
private static JSONArray jsonArray = JSONArray.fromObject(JsonContext)//获取JSONArray 对象
Object test = jsonArray.getJSONObject(1).get(" **** ");//从JSONArray 中取出第二个对象,并取出变量 “ **** ”
Json与xml比较
JSON表示法在语法上要比XML要简洁的多,由于不需要使用关闭标签来呼应开始标签,因此许多多余的信息不再出现了,相对XML而言基本上不存在数据冗余,这在传输与响应速度上大在提高了。
另外,JSON丢弃了DOM解析了(客户端的JavaScript的XML DOM解析,服务器端的DOM、SAX、Dom4j、Jdom等)。
JSON与XML相比对JavaScript有着更好的通用性,一段JSON格式数据经过JavaScript一个简单的方法(eval)即可转换成 JavaScript对象供程序调用,转换方法是浏览器的JavaScript内部定义好的无需再手工编写。
而一段XML格式的数据需要调用浏览器内部的 XML解析器工具进行解析后才可以使用。而对于不同内核的浏览器(如IE、Netscape等)XML解析的方法是有差别的,因此需要针对不同浏览器内核做不同的方法封装,从而给客户端开发带来一定的复杂度。
相比之下JSON被浏览器解析的速度更快。在服务器端不同的语言也有不同的JSON解析器,可以很方便的解析客户端传过来的字符串,而不像为了读取XML还是借助于这样或那样的API工具。
Json与properties比较
properties文件顾名思义,属性文件,从它的名称中直观的理解就是,它应该是可以表示某些属性,可以在它里面定义一些字段,这将不需要我们在代码中书写,这就可以将这些信息从代码中分离出来了
如:
jdbc.driver=org.gjt.mm.mysql.Driver
jdbc.url=jdbc:mysql://localhost:3306/hty?characterEncoding=utf-8
jdbc.username=root
JSON适合数据传输,properties适合做简单的属性配置,复杂的数据格式要用json定义