Json解析库

Json(JavaScript Object Notation)是一种轻量级的数据交换格式。用于数据传输,通用于PHP,Java,C++,C#,Python等编程语言数据交换传输。

Google为我们提供了Gson解析库可以将一个JSON字符串转成一个Java对象,或者反过来。将Gson.jar包放在libs中,Add as Library,这里还用到了Volley库进行网络通信。示例:

 1 package com.zhang.gsondemo.bean;
 2 
 3 
 4 
 5 import java.util.ArrayList;
 6 
 7 /**
 8  * Created by Mr.Z on 2016/10/7 0007.
 9  */
10 
11 public class Book {
12     private String title;
13     private String publisher;
14     private String summary;
15     private ArrayList<Tag> tags;
16 
17     public String getTitle() {
18         return title;
19     }
20 
21     public void setTitle(String title) {
22         this.title = title;
23     }
24 
25     public String getPublisher() {
26         return publisher;
27     }
28 
29     public void setPublisher(String publisher) {
30         this.publisher = publisher;
31     }
32 
33     public String getSummary() {
34         return summary;
35     }
36 
37     public void setSummary(String summary) {
38         this.summary = summary;
39     }
40 
41     public ArrayList<Tag> getTags() {
42         return tags;
43     }
44 
45     public void setTags(ArrayList<Tag> tags) {
46         this.tags = tags;
47     }
48 }
 1 package com.zhang.gsondemo.bean;
 2 
 3 /**
 4  * Created by Mr.Z on 2016/10/7 0007.
 5  */
 6 
 7 public class Tag {
 8     private String count;
 9     private String name;
10     private String title;
11 
12     public String getCount() {
13         return count;
14     }
15 
16     public void setCount(String count) {
17         this.count = count;
18     }
19 
20     public String getName() {
21         return name;
22     }
23 
24     public void setName(String name) {
25         this.name = name;
26     }
27 
28     public String getTitle() {
29         return title;
30     }
31 
32     public void setTitle(String title) {
33         this.title = title;
34     }
35 }
 1 package com.zhang.gsondemo;
 2 
 3 import android.os.Bundle;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.util.Log;
 6 
 7 import com.android.volley.Response;
 8 import com.android.volley.VolleyError;
 9 import com.android.volley.toolbox.StringRequest;
10 import com.android.volley.toolbox.Volley;
11 import com.google.gson.Gson;
12 import com.zhang.gsondemo.bean.Book;
13 import com.zhang.gsondemo.bean.Tag;
14 
15 
16 import java.util.ArrayList;
17 
18 public class MainActivity extends AppCompatActivity {
19 
20     private String url = "https://api.douban.com/v2/book/1220562";
21 
22     @Override
23     protected void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.activity_main);
26 
27         getData();
28     }
29 
30     private void getData() {
31         StringRequest request = new StringRequest(url,
32                 new Response.Listener<String>() {
33                     @Override
34                     public void onResponse(String s) {
35                         Log.i("info", s);
36                         dealData(s);
37                     }
38                 },
39                 new Response.ErrorListener() {
40                     @Override
41                     public void onErrorResponse(VolleyError volleyError) {
42 
43                     }
44                 });
45 
46         Volley.newRequestQueue(this).add(request);
47     }
48 
49     private void dealData(String s) {
50         Gson gson = new Gson();
51         Book book = gson.fromJson(s, Book.class);
52         Log.i("info", book.getTitle() + "----" + book.getPublisher() + "----" + book.getTags().size());
53         ArrayList<com.zhang.gsondemo.bean.Tag> tags = book.getTags();
54         for (com.zhang.gsondemo.bean.Tag tag:tags){
55             System.out.println(tag.getTitle());
56         }
57 
58 
59     }
60 
61 
62 }

  


阿里巴巴的工程师封装了一个Fast-json的解析库,用起来也很方便 ,官方介绍比其他任何基于Java的解析器和生成器更快,更强大。Java对象同上:

 1 package com.zhang.fastjsondemo;
 2 
 3 import android.os.Bundle;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.util.Log;
 6 
 7 import com.alibaba.fastjson.JSON;
 8 import com.android.volley.Response;
 9 import com.android.volley.VolleyError;
10 import com.android.volley.toolbox.StringRequest;
11 import com.android.volley.toolbox.Volley;
12 import com.zhang.fastjsondemo.bean.Book;
13 
14 public class MainActivity extends AppCompatActivity {
15 
16     private String url = "https://api.douban.com/v2/book/1220562";
17 
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22 
23         getData();
24     }
25 
26     private void getData() {
27         StringRequest request = new StringRequest(url,
28                 new Response.Listener<String>() {
29                     @Override
30                     public void onResponse(String s) {
31                         Log.i("info", s);
32                         dealData(s);
33                     }
34                 },
35                 new Response.ErrorListener() {
36                     @Override
37                     public void onErrorResponse(VolleyError volleyError) {
38 
39                     }
40                 });
41 
42         Volley.newRequestQueue(this).add(request);
43     }
44 
45     private void dealData(String s) {
46         Book book = JSON.parseObject(s, Book.class);
47         Log.i("info", book.getTitle() + "----" + book.getPublisher() + "----" + book.getTags().size());
48 
49 //
50 //        //读取多条json
51 //        List<Book> books = JSON.parseObject(s, new TypeReference<List<Book>>() {
52 //        });
53 //
54 //        //集合转化成json
55 //        Book book1 = new Book();
56 //        book1.setTitle("biaoti1");
57 //        Book book2 = new Book();
58 //        book2.setTitle("biaoti2");
59 //        Book book3 = new Book();
60 //        book3.setTitle("biaoti3");
61 //
62 //        List<Book> list = new ArrayList<Book>();
63 //        list.add(book1);
64 //        list.add(book2);
65 //        list.add(book3);
66 //        JSON.toJSON(list);
67     }
68 }

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值