数据基础知识:了解JSON数据格式。
JSON语法
JSON的全称是”JavaScript Object Notation”,意思是javascript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。
JSON的格式
JSON 数据的书写格式是键(名称)/值对。
JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对包括字段名称(在双引号中),后面写一个冒号,然后是值。
JSON 值可以是:字符串(在双引号中)、数组(在中括号中)、数字(整数或浮点数)、逻辑值(true 或 false)、对象(在大括号中)、 null。
JSON结构
JSON结构有两种结构,就是对象和数组。通过这两种结构可以表示各种复杂的结构。
{“province”: “Shanxi”} 可以理解为是一个包含province为Shanxi的对象,
[“Shanxi”,“Shandong”]这是一个包含两个元素的数组
而 [{“province”: “Shanxi”},{“province”: “Shandong”}] 就表示包含两个对象的数组。
当然了,你也可以使用 {“province”:[“Shanxi”,“Shandong”]} 来简化上面的JSON,这是一个拥有一个name数组的对象。
注意:(1)JSON键必须用双引号括起来,否则会报错(2)最后一个属性不能加逗号.我们可以通过JSON校验工具来检查你的JSON数据格式是否正确。比如:http://www.json.cn/、http://www.bejson.com/等等。
JSON与JS对象的关系
(注意:这里是js的语法)
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。平时说的JSON对象,是JSON格式的JS对象或是符合JSON数据结构要求的JS对象。
JSON和JS对象互转
要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({province:“shanxi”,cify:“jin”});
结果:
{“province”:“shanxi”,“city”:“jin”}
要实现从 JSON 转换为对象,使用 JSON.parse() 方法:
var obj = JSON.parse(‘{“province”:“shanxi”,“city”:“jin”}’);
结果:
Object {province:“shanxi”,city:“jin”}
举个例子:
根据要求自己编写一个json串。
data是一个JSON对象,它具有3个属性:code,msg,result,其中code和msg的值都是字符串,result的值是一个对象数组。result包含了一个对象,这个对象具有3个属性userid,uname,email。
{ "code”:"0”, "msg”:"显示信息”, "result”:[ { "userid”:"1”, "uname”:"zhsngsan”, "email”:"zhang@123.com” } ] }
JSON解析
我们要学习三方的解析架包。
json-lib
需要很多依赖包:
commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-lang-2.6.jar
commons-logging-1.1.1.jar ezmorph-1.0.6.jar json-lib-2.4-jdk15.jar
1.添加的依赖 commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons-logging-1.1.1.jar ezmorph-1.0.6.jar json-lib-2.4-jdk15.jar 2.具体实现: public class TestDemo { //@Test public void test1(){ //json就是字符串 {}代表对象 []代表数组 String ss1 = "{\"name\":\"qianfeng\",\"email\":\"22@22\",\"birthday\":\"10-10\"}"; String ss2 = "[{\"name\":\"qianfeng\",\"email\":\"22@22\",\"birthday\":\"10-10\"},{\"name\":\"qianfeng\",\"email\":\"22@22\",\"birthday\":\"10-10\"}]"; String ss3 = "{\"name\":\"qianfeng\",\"email\":\"22@22\",\"birthday\":[{\"year\":\"1990\",\"month\":\"10-10\"}]}"; } //@Test public void test2(){ Book book = new Book(); book.setId("92837492834"); book.setName("好书"); book.setPrice(100000); book.setCategory("艺术"); book.setDescription("赶紧买吧"); book.setPnum(2000); //把对象转成json对象 JSONObject jsonObject = JSONObject.fromObject(book); System.out.println(jsonObject); } @Test public void test3() { List<Book> list =new ArrayList<Book>(); Book book = new Book(); book.setId("92837492834"); book.setName("好书"); book.setPrice(100000); book.setCategory("艺术"); book.setDescription("赶紧买吧"); book.setPnum(2000); Book book2 = new Book(); book2.setId("928374928342"); book2.setName("2好书"); book2.setPrice(2100000); book2.setCategory("2艺术"); book2.setDescription("2赶紧买吧"); book2.setPnum(3000); list.add(book); list.add(book2); //把list转成json数组 JSONArray jsonArray = JSONArray.fromObject(list); System.out.println(jsonArray.toString()); } public class Book { private String id; private String name; private double price; private int pnum; private String category; private String description; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getPnum() { return pnum; } public void setPnum(int pnum) { this.pnum = pnum; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
网友评论文明上网理性发言 已有0人参与
发表评论: