数据基础知识:了解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;
}
}