JSON轻量级数据使用和解析

一、JSON

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 JSON采用完全独立于语言的文本格式。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

  JSON与XML的对比(引用自:sanpintian的CSDN博客):

  1、可读性:JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。

  2、可扩展性:XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

  3、编码难度:XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

  4、解码难度:XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。

  5、流行度:XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。

 

二、导包

  使用JSON需要导入以下包:

  commons-beanutils.jar
  commons-logging.jar
  commons-lang.jar
  commons-collection.jar
  ezmorph.jar
  json-lib.jar

三、实现

 

 Book类的实现:
复制代码

 1  public class Book {
 2     private String name;
 3     private double price;
 4     
 5     public String getName() {
 6         return name;
 7     }
 8 
 9     public void setName(String name) {
10         this.name = name;
11     }
12 
13     public double getPrice() {
14         return price;
15     }
16 
17     public void setPrice(double price) {
18         this.price = price;
19     }
20 
21     @Override
22     public String toString() {
23         return name+" "+price;
24     }
25 }
复制代码

 

复制代码
 1 /**
 2  * @author ZWQ
 3  * **/
 4 public class JsonTest {
 5     public static void main(String[] args) {
 6         //***********************************************************************
 7         // json基本测试
 8         {
 9             //新建一个JSON数组
10             JSONArray jsonArray = new JSONArray();
11             //新建一个JSON对象
12             JSONObject json1 = new JSONObject();
13             json1.put("id", "1");
14             json1.put("name", "张三");
15             json1.put("password", "123456");
16             //将JSON对象添加到JSON数组中去
17             jsonArray.add(json1);
18 
19             JSONObject json2 = new JSONObject();
20             json2.put("id", "2");
21             json2.put("name", "李四");
22             json2.put("password", "654321");
23             jsonArray.add(json2);
24             System.out.println("json数组基本测试:" + jsonArray);
25             
26             //结果:
27             //[{"id":"1","name":"张三","password":"123456"},{"id":"2","name":"李四","password":"654321"}]
28         }
29         
30         //***********************************************************************
31         //将对象转成JSON字符串
32         {
33             Book book = new Book();
34             book.setName("Java入门教程");
35             book.setPrice(52.3);
36             //将Java对象转成JSON对象
37             JSONObject jsonObject = JSONObject.fromObject(book);
38             System.out.println("从Object到JSONObject:" + jsonObject.toString());
39             
40             //结果:
41             //从Object到JSONObject:{"name":"Java入门教程","price":52.3}
42         }
43         
44         //***********************************************************************
45         //将对象集合转成JSON字符串
46         {
47             List<Book> list = new ArrayList<Book>();
48             Book book1 = new Book();
49             book1.setName("高等数学I");
50             book1.setPrice(34.1);
51             Book book2 = new Book();
52             book2.setName("线性代数");
53             book2.setPrice(12.7);
54             list.add(book1);
55             list.add(book2);
56             //将List集合转为JSON数组
57             JSONArray jsonArray= JSONArray.fromObject(list);
58             System.out.println("从Object集合到JSONArray:" + jsonArray.toString());
59             
60             //结果:
61             //从Object集合到JSONArray:[{"name":"高等数学I","price":34.1},{"name":"线性代数","price":12.7}]
62         }
63         
64         //***********************************************************************
65         // 将JSON字符串转为Java对象
66         {
67             String jsonString = "{name:'数据结构',price:52.3}";
68             JSONObject jsonObject = JSONObject.fromObject(jsonString);
69             //将JSON对象转为Java对象
70             Book book = (Book) JSONObject.toBean(jsonObject, Book.class);
71             System.out.println(book.toString());
72 
73             //结果:
74             //数据结构 52.3
75         }
76         
77         //***********************************************************************
78         //将JSON字符串转为Java对象数组
79         {
80             // (2).Bean的数组
81             String jsonsString = "[{name:'数据库基础',price:52.3},{name:'Oracle 11g精华',price:42.3}]";
82             JSONArray jsonArray = JSONArray.fromObject(jsonsString);
83             //将JSON数组转为Java对象数组
84             Book[] books = (Book[]) JSONArray.toArray(jsonArray, Book.class);
85             for (Book b : books) {
86                 System.out.println(b.toString());
87             }
88             
89             //结果:
90             //数据库基础 52.3
91             //Oracle 11g精华 42.3
92         }
93     }
94 }
复制代码

 

四、前端解析

 

复制代码
 1 //Jquery提供的获取json的方法
 2 //使用前先导入Jquery
 3 
 4 $('#button').click(function(){
 5     //url:请求的地址
 6     $.getJSON('url', {
 7         //id是需要传的参数
 8         id: 1
 9         }, function(data) {//成功后data即为获取的json字符串
10             //例如data:[{"name":"高等数学I","price":34.1},{"name":"线性代数","price":12.7}]
11             alert("第二本书是:"+data[1].name+"  价格是:"+data[1].price);
12         });
13 });
复制代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值