使用JSON文件读取数据

来源:互联网 发布:西蒙斯体测数据 编辑:程序博客网 时间:2024/05/18 01:18

定义

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定义

0 0