Json解析库

来源:互联网 发布:spss数据分析 pdf 编辑:程序博客网 时间:2024/05/18 02:52
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     @Override23     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                     @Override34                     public void onResponse(String s) {35                         Log.i("info", s);36                         dealData(s);37                     }38                 },39                 new Response.ErrorListener() {40                     @Override41                     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     @Override19     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                     @Override30                     public void onResponse(String s) {31                         Log.i("info", s);32                         dealData(s);33                     }34                 },35                 new Response.ErrorListener() {36                     @Override37                     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 //        //读取多条json51 //        List<Book> books = JSON.parseObject(s, new TypeReference<List<Book>>() {52 //        });53 //54 //        //集合转化成json55 //        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
原创粉丝点击