fastjson生成和解析json数据

本文讲解2点:

1. fastjson生成和解析json数据

  (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)

2.通过一个android程序测试fastjson的用法。

fastjson简介:

Fastjson是一个Java语言编写的高性能功能完善的JSON库。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里云手机等环境。

一. fastjson生成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)

     String jsonStrng = JSON.toJSONString(object);

二. fastjson 解析json字符串为四种类型

      1. JavaBean

          Person person = JSON.parseObject(jsonString, Person.class);

      2. List<JavaBean>

          List<Person> listPerson =JSON.parseArray(jsonString, Person.class);

      3. List<String>

          List<String> listString = JSON.parseArray(jsonString, String.class);

      4. List<Map<String,Object>>

          List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});  (注意:此处可看出fastjson反射机制比gson更准确, id = 1001 通过fastjson反射仍是 id = 1001 , 而通过gson反射结果 为 id =1001.0 ,参考前篇程序运行结果图GSON方式生成和解析json数据)

-----------------------------------------------------------------------------------------------------------------------------------------

程序运行结果:

1. 点击“解析Person数据”按钮

2. 点击“解析Persons数据按钮”

3.点击“解析listString数据”按钮

4.点击“解析listMap数据”按钮

--------------------------------------------------------------------------------------------------------------------------------------

客户端eclipse android工程目录(左边)服务器端myeclipse web工程(右边)

    

---------------------------------------------------------------------------------------------------------------------------------------

服务器端 fastjson_Project

1.FastJsonAction.java

[java]  view plain copy
  1. package com.fastjson.action;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. import com.fastjson.service.FastJsonService;  
  12. import com.fastjson.tools.*;  
  13.   
  14. public class FastJsonAction extends HttpServlet {  
  15.   
  16.   
  17.   
  18.     /** 
  19.      * Destruction of the servlet. <br> 
  20.      */  
  21.     public void destroy() {  
  22.         super.destroy(); // Just puts "destroy" string in log  
  23.         // Put your code here  
  24.     }  
  25.   
  26.     /** 
  27.      * The doGet method of the servlet. <br> 
  28.      * 
  29.      * This method is called when a form has its tag value method equals to get. 
  30.      *  
  31.      * @param request the request send by the client to the server 
  32.      * @param response the response send by the server to the client 
  33.      * @throws ServletException if an error occurred 
  34.      * @throws IOException if an error occurred 
  35.      */  
  36.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  37.             throws ServletException, IOException {  
  38.         this.doPost(request, response);  
  39.     }  
  40.   
  41.     /** 
  42.      * The doPost method of the servlet. <br> 
  43.      * 
  44.      * This method is called when a form has its tag value method equals to post. 
  45.      *  
  46.      * @param request the request send by the client to the server 
  47.      * @param response the response send by the server to the client 
  48.      * @throws ServletException if an error occurred 
  49.      * @throws IOException if an error occurred 
  50.      */  
  51.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  52.             throws ServletException, IOException {  
  53.   
  54.         response.setContentType("text/html;charset=utf-8");  
  55.         request.setCharacterEncoding("utf-8");  
  56.         response.setCharacterEncoding("utf-8");  
  57.           
  58.         String action_flag = request.getParameter("action_flag");         
  59.         PrintWriter out = response.getWriter();  
  60.         if ("person".equals(action_flag)) {  
  61.     //      String person = GsonTools.creatJsonString(GsonService.getPerson());  
  62.             String person = FastJsonTools.createJsonString(FastJsonService.getPerson());  
  63.             out.println(person);  
  64.             System.out.println(person);  
  65.               
  66.         } else if("persons".equals(action_flag)) {  
  67.     //      String persons = GsonTools.creatJsonString(GsonService.getListPersons());  
  68.             String persons = FastJsonTools.createJsonString(FastJsonService.getListPersons());  
  69.             out.println(persons);  
  70.             System.out.println(persons);  
  71.         }else if("listString".equals(action_flag)) {  
  72.         //  String listString = GsonTools.creatJsonString(GsonService.getListString());  
  73.             String listString = FastJsonTools.createJsonString(FastJsonService.getListString());  
  74.             out.println(listString);  
  75.             System.out.println(listString);  
  76.         }else if("listMap".equals(action_flag)) {  
  77.         //  String listMap = GsonTools.creatJsonString(GsonService.getListMap());  
  78.             String listMap = FastJsonTools.createJsonString(FastJsonService.getListMap());  
  79.             out.println(listMap);  
  80.             System.out.println(listMap);  
  81.         }  
  82.           
  83.         System.out.println();  
  84.           
  85.         out.flush();  
  86.         out.close();  
  87.     }  
  88.   
  89.     /** 
  90.      * Initialization of the servlet. <br> 
  91.      * 
  92.      * @throws ServletException if an error occurs 
  93.      */  
  94.     public void init() throws ServletException {  
  95.         // Put your code here  
  96.     }  
  97. }  

2.FastJsonService.java

[java]  view plain copy
  1. package com.fastjson.service;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import com.fastjson.data.Person;  
  9.   
  10. public class FastJsonService {  
  11.   
  12.     public static Person getPerson() {  
  13.   
  14.         Person person = new Person(1001"刘德华""香港");  
  15.         return person;  
  16.   
  17.     }  
  18.   
  19.     public static List<Person> getListPersons() {  
  20.         List<Person> persons = new ArrayList<Person>();  
  21.         Person person1 = new Person(1001"刘德华""香港");  
  22.         Person person2 = new Person(1002"宋慧乔""韩国");  
  23.         persons.add(person1);  
  24.         persons.add(person2);  
  25.         return persons;  
  26.   
  27.     }  
  28.       
  29.     public static List<String> getListString(){  
  30.           
  31.         List<String> list = new ArrayList<String>();  
  32.         list.add("美国");  
  33.         list.add("中国");  
  34.         list.add("俄罗斯");      
  35.           
  36.         return list;  
  37.     }   
  38.   
  39.       
  40.     public static List<java.util.Map<String, Object>> getListMap(){  
  41.         List<java.util.Map<String, Object>> list = new ArrayList<Map<String,Object>>();  
  42.         java.util.Map<String,Object> map1 = new HashMap<String,Object>();  
  43.         map1.put("id",1001);  
  44.         map1.put("name","刘德华");  
  45.         map1.put("address","香港");  
  46.           
  47.         java.util.Map<String,Object> map2 = new HashMap<String,Object>();  
  48.         map2.put("id",1002);  
  49.         map2.put("name","宋慧乔");  
  50.         map2.put("address","韩国");  
  51.           
  52.         list.add(map1);  
  53.         list.add(map2);  
  54.           
  55.         return list;  
  56.           
  57.     }  
  58. }  

3.FastJsonTools.java

[java]  view plain copy
  1. package com.fastjson.tools;  
  2. import  com.alibaba.fastjson.*;  
  3.   
  4. public class FastJsonTools {  
  5.     public static String createJsonString(Object object){  
  6.         String jsonString = "";  
  7.         try {  
  8.             jsonString = JSON.toJSONString(object);  
  9.         } catch (Exception e) {  
  10.             // TODO: handle exception  
  11.         }  
  12.           
  13.         return jsonString;  
  14.     }  
  15. }  

4.Person.java

[java]  view plain copy
  1. package com.fastjson.data;  
  2.   
  3. public class Person {  
  4.     private int id;  
  5.     private String name;  
  6.     private String address;  
  7.       
  8.     public Person() {  
  9.         // TODO Auto-generated constructor stub  
  10.     }  
  11.   
  12.     public int getId() {  
  13.         return id;  
  14.     }  
  15.   
  16.     public void setId(int id) {  
  17.         this.id = id;  
  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 getAddress() {  
  29.         return address;  
  30.     }  
  31.   
  32.     public void setAddress(String address) {  
  33.         this.address = address;  
  34.     }  
  35.   
  36.     public Person(int id, String name, String address) {  
  37.         super();  
  38.         this.id = id;  
  39.         this.name = name;  
  40.         this.address = address;  
  41.     }  
  42.   
  43.     @Override  
  44.     public String toString() {  
  45.         return "Person [id=" + id + ", name=" + name + ", address=" + address  
  46.                 + "]";  
  47.     }  
  48.       
  49.   
  50. }  

5. TestFastJson.java

[java]  view plain copy
  1. package com.fastjson.test;  
  2.   
  3. import com.fastjson.service.FastJsonService;  
  4. import com.fastjson.tools.FastJsonTools;  
  5.   
  6. public class TestFastJson {  
  7.   
  8.     /** 
  9.      * @param args 
  10.      */  
  11.     public static void main(String[] args) {  
  12.         // TODO Auto-generated method stub  
  13.   
  14.         //Test1 Person    
  15.         System.out.println("FastJson数据格式测试结果:\n");  
  16.         String person = FastJsonTools.createJsonString(FastJsonService.getPerson());   
  17.   
  18.         //Test2 persons  
  19.         String listPerson =  FastJsonTools.createJsonString(FastJsonService.getListPersons());  
  20.         //Test3 listString  
  21.         String listString =  FastJsonTools.createJsonString(FastJsonService.getListString()) ;  
  22.         //Test 4 listMap  
  23.         String listMap = FastJsonTools.createJsonString(FastJsonService.getListMap()) ;  
  24.           
  25.         System.out.println("测试结果1:"+person+"\n");  
  26.         System.out.println("测试结果2:"+listPerson+"\n");  
  27.         System.out.println("测试结果3:"+listString+"\n");  
  28.         System.out.println("测试结果4:"+listMap);  
  29.   
  30.     }  
  31.   
  32. }  


客户端:android_fastjson

1.MainActivity.java

[java]  view plain copy
  1. package com.android.mygson;  
  2.   
  3. import java.io.ByteArrayOutputStream;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.io.Serializable;  
  7. import java.net.HttpURLConnection;  
  8. import java.net.URL;  
  9. import java.util.List;  
  10. import java.util.Map;  
  11.   
  12. import com.alibaba.fastjson.JSON;  
  13. import com.alibaba.fastjson.TypeReference;  
  14. import com.fastjson.tools.FastJsonTools;  
  15. import com.gson.data.Person;  
  16. import com.gson.http.HttpUtils;  
  17. import android.os.Bundle;  
  18. import android.os.StrictMode;  
  19. import android.annotation.SuppressLint;  
  20. import android.app.Activity;  
  21. import android.content.Intent;  
  22. import android.view.View;  
  23. import android.view.View.OnClickListener;  
  24. import android.widget.Button;  
  25.   
  26.   
  27.   
  28.  public class MainActivity extends Activity implements OnClickListener {  
  29.     private Button person, persons, listString, listMap;  
  30.     @Override  
  31.     protected void onCreate(Bundle savedInstanceState) {  
  32.         super.onCreate(savedInstanceState);  
  33.         setContentView(R.layout.activity_main);  
  34.         closeStrictMode();//关闭严苛模式        
  35.           
  36.   
  37.         person = (Button) findViewById(R.id.person);  
  38.         persons = (Button) findViewById(R.id.persons);  
  39.         listString = (Button) findViewById(R.id.listString);  
  40.         listMap = (Button) findViewById(R.id.listMap);  
  41.         person.setOnClickListener(this);  
  42.         persons.setOnClickListener(this);  
  43.         listString.setOnClickListener(this);  
  44.         listMap.setOnClickListener(this);  
  45.   
  46.     }  
  47.   
  48.     @Override  
  49.     public void onClick(View v) {  
  50.         // TODO Auto-generated method stub  
  51.           
  52.         switch (v.getId()) {  
  53.         case R.id.person:  
  54.   
  55.             String url_path = "http://192.168.0.102:8080/fastjson_Project/servlet/FastJsonAction?action_flag=person";  
  56.             String jsonString = HttpUtils.getJsonContent(url_path, "utf-8");                  
  57.             Person person = FastJsonTools.getPerson(jsonString, Person.class);  
  58.             //用fastJson技术解析json字符串,转换为Person对象  
  59.     //      Person person = JSON.parseObject(jsonString, Person.class);  
  60.               
  61.           
  62.               
  63.             Intent intent = new Intent(MainActivity.this, OtherActivity.class);  
  64.             intent.putExtra("click_flag""person");  
  65.             intent.putExtra("person", (Serializable) person);         
  66.             startActivity(intent);  
  67.               
  68.             // Log.i(TAG, person.toString());  
  69.   
  70.             break;  
  71.   
  72.         case R.id.persons:  
  73.             String url_path2 = "http://192.168.0.102:8080/fastjson_Project/servlet/FastJsonAction?action_flag=persons";  
  74.             String jsonString2 = HttpUtils.getJsonContent(url_path2, "utf-8");            
  75.               
  76.             // 用fastjson 将json字符串转换成 List<Person>  
  77.     //      List<Person> listPerson =JSON.parseArray(jsonString2, Person.class);  
  78.             List<Person> listPerson =FastJsonTools.getPersons(jsonString2, Person.class);  
  79.             Intent intent2 = new Intent(MainActivity.this, OtherActivity.class);  
  80.             intent2.putExtra("click_flag""persons");  
  81.             intent2.putExtra("persons", (Serializable) listPerson); // 用Intent传递 List<Person>数据类型  
  82.             startActivity(intent2);  
  83.             break;  
  84.               
  85.         case R.id.listString:  
  86.             String url_path3 = "http://192.168.0.102:8080/fastjson_Project/servlet/FastJsonAction?action_flag=listString";  
  87.             String jsonString3 = HttpUtils.getJsonContent(url_path3, "utf-8");  
  88.               
  89.             // 用fastjson 将json字符串转换成 List<String>  
  90.     //      List<String> listString = JSON.parseArray(jsonString3, String.class);  
  91.             List<String> listString = FastJsonTools.getPersons(jsonString3,String.class);  
  92.             Intent intent3 = new Intent(MainActivity.this, OtherActivity.class);  
  93.             intent3.putExtra("click_flag""listString");  
  94.             intent3.putExtra("listString", (Serializable) listString); // 用Intent传递 List<Person>数据类型  
  95.             startActivity(intent3);  
  96.             break;  
  97.               
  98.         case R.id.listMap:  
  99.             String url_path4 = "http://192.168.0.102:8080/fastjson_Project/servlet/FastJsonAction?action_flag=listMap";  
  100.             String jsonString4 = HttpUtils.getJsonContent(url_path4, "utf-8");  
  101.               
  102.             // 用fastjson 将json字符串转换成 List<Map<String,Object>>         
  103.         //  List<Map<String, Object>> listMap = JSON.parseObject(jsonString4, new TypeReference<List<Map<String,Object>>>(){});  
  104.             List<Map<String, Object>> listMap = FastJsonTools.getListMap(jsonString4);  
  105.             Intent intent4 = new Intent(MainActivity.this, OtherActivity.class);  
  106.             intent4.putExtra("click_flag""listMap");  
  107.             intent4.putExtra("listMap", (Serializable) listMap); // 用Intent传递 List<Map<Sting,Object>>数据类型  
  108.             intent4.putExtra("jsonString", jsonString4);  
  109.             startActivity(intent4);  
  110.             break;  
  111.               
  112.   
  113.         }  
  114.   
  115.     }  
  116.   
  117.     @SuppressLint("NewApi")  
  118.     public static void closeStrictMode() {  
  119.         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()  
  120.                 .detectAll().penaltyLog().build());  
  121.     }  
  122.       
  123.     private static String changeInputStream(InputStream inputStream , String encode) throws IOException {  
  124.         // TODO Auto-generated method stub  
  125.         String  jsonString = null;  
  126.           
  127.         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();  
  128.         byte[] data = new byte[1024];  
  129.         int len = 0;  
  130.         while((len=inputStream.read(data))!=-1){  
  131.             outputStream.write(data, 0, len);  
  132.         }  
  133.           
  134.         jsonString = new String(outputStream.toByteArray(), encode);  
  135.   
  136.         inputStream.close();  
  137.           
  138.           
  139.         return jsonString;  
  140.     }  
  141.   
  142. }  

2.OtherActivity.java

[java]  view plain copy
  1. package com.android.mygson;  
  2.   
  3.   
  4. import java.util.List;  
  5. import java.util.Map;  
  6.   
  7. import com.gson.data.Person;  
  8.   
  9. import android.R.integer;  
  10. import android.app.Activity;  
  11. import android.content.Intent;  
  12. import android.os.Bundle;  
  13. import android.widget.TextView;  
  14.   
  15. public class OtherActivity extends Activity {  
  16.   
  17.     private TextView textView;  
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         // TODO Auto-generated method stub  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.activity_other);  
  23.   
  24.         textView = (TextView) findViewById(R.id.msg);  
  25.         Intent intent = getIntent();  
  26.         String click_flag = intent.getStringExtra("click_flag");  
  27.         if ("person".equals(click_flag)) { // 如果是点击 person按钮  
  28.             // 接收Intent传递的Person对象  
  29.             Person person =(Person) intent.getSerializableExtra("person");    
  30.             textView.setText(person.toString());      
  31.               
  32.     //      textView.setText("test :"+intent.getStringExtra("test"));  
  33.               
  34.         } else if ("persons".equals(click_flag)) {// 如果是点击 persons按钮  
  35.               
  36.             // 接收Intent传递的List<Person>参数  
  37.             @SuppressWarnings("unchecked")  
  38.             List<Person> list = (List<Person>) intent  
  39.                     .getSerializableExtra("persons");  
  40.             String persons = "";  
  41.             for (Person person : list) {  
  42.                 persons += person.toString() + "\n";  
  43.             }  
  44.             textView.setText(persons);    
  45.       
  46.         }else if ("listString".equals(click_flag)) {  
  47.             List<String> list = (List<String>) intent  
  48.                     .getStringArrayListExtra("listString");  
  49.   
  50.             String listString = "";  
  51.             for (String s : list) {  
  52.                 listString += s + "\n";  
  53.             }  
  54.             textView.setText(listString);  
  55.         } else if ("listMap".equals(click_flag)) {  
  56.             //接收Intent传递的List<Map<String,Object>>参数  
  57.             @SuppressWarnings("unchecked")  
  58.             List<Map<String, Object>> list = (List<Map<String, Object>>) intent  
  59.                     .getSerializableExtra("listMap");  
  60.   
  61.             String listMapString = "";  
  62.             for (Map<String, Object> map : list) {  
  63.                 // 遍历一个Map  
  64.                 for (Map.Entry<String, Object> entry : map.entrySet()) {  
  65.                     String key = entry.getKey();  
  66.                     Object value = entry.getValue();                      
  67.                     listMapString += " " + key + " : " + value + " ";  
  68.                 }  
  69.                 listMapString += "\n";  
  70.             }  
  71.   
  72.             textView.setText(listMapString+intent.getStringExtra("jsonString"));  
  73.         }  
  74.           
  75.     }  
  76.   
  77. }  

3.FastJsonTools.java

[java]  view plain copy
  1. package com.fastjson.tools;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6.   
  7. import com.alibaba.fastjson.JSON;  
  8. import com.alibaba.fastjson.TypeReference;  
  9.   
  10. public class FastJsonTools {  
  11.   
  12.     /** 
  13.      * 用fastjson 将json字符串解析为一个 JavaBean 
  14.      *  
  15.      * @param jsonString 
  16.      * @param cls 
  17.      * @return 
  18.      */  
  19.     public static <T> T getPerson(String jsonString, Class<T> cls) {  
  20.         T t = null;  
  21.         try {  
  22.             t = JSON.parseObject(jsonString, cls);  
  23.         } catch (Exception e) {  
  24.             // TODO: handle exception  
  25.             e.printStackTrace();  
  26.         }  
  27.         return t;  
  28.     }  
  29.   
  30.     /** 
  31.      * 用fastjson 将json字符串 解析成为一个 List<JavaBean> 及 List<String> 
  32.      *  
  33.      * @param jsonString 
  34.      * @param cls 
  35.      * @return 
  36.      */  
  37.     public static <T> List<T> getPersons(String jsonString, Class<T> cls) {  
  38.         List<T> list = new ArrayList<T>();  
  39.         try {  
  40.             list = JSON.parseArray(jsonString, cls);  
  41.         } catch (Exception e) {  
  42.             // TODO: handle exception  
  43.         }  
  44.         return list;  
  45.     }  
  46.   
  47.     /** 
  48.      * 用fastjson 将jsonString 解析成 List<Map<String,Object>> 
  49.      *  
  50.      * @param jsonString 
  51.      * @return 
  52.      */  
  53.     public static List<Map<String, Object>> getListMap(String jsonString) {  
  54.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  55.         try {  
  56.             // 两种写法  
  57.             // list = JSON.parseObject(jsonString, new  
  58.             // TypeReference<List<Map<String, Object>>>(){}.getType());  
  59.   
  60.             list = JSON.parseObject(jsonString,  
  61.                     new TypeReference<List<Map<String, Object>>>() {  
  62.                     });  
  63.         } catch (Exception e) {  
  64.             // TODO: handle exception  
  65.         }  
  66.         return list;  
  67.   
  68.     }  
  69.   
  70. }  

4.Person.java

[java]  view plain copy
  1. package com.gson.data;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5.   
  6.   
  7. public class Person implements Serializable{  
  8.       
  9.       
  10.     private int id;  
  11.     private String name;  
  12.     private String address;  
  13.       
  14.     public Person() {  
  15.         // TODO Auto-generated constructor stub  
  16.     }  
  17.   
  18.     public int getId() {  
  19.         return id;  
  20.     }  
  21.   
  22.     public void setId(int id) {  
  23.         this.id = id;  
  24.     }  
  25.   
  26.     public String getName() {  
  27.         return name;  
  28.     }  
  29.   
  30.     public void setName(String name) {  
  31.         this.name = name;  
  32.     }  
  33.   
  34.     public String getAddress() {  
  35.         return address;  
  36.     }  
  37.   
  38.     public void setAddress(String address) {  
  39.         this.address = address;  
  40.     }  
  41.   
  42.     public Person(int id, String name, String address) {  
  43.         super();  
  44.         this.id = id;  
  45.         this.name = name;  
  46.         this.address = address;  
  47.     }  
  48.   
  49.     @Override  
  50.     public String toString() {  
  51.         return "Person [id=" + id + ", name=" + name + ", address=" + address  
  52.                 + "]";  
  53.     }  
  54.       
  55.   
  56. }  

5.HttpUtils.java

[java]  view plain copy
  1. package com.gson.http;  
  2.   
  3. import java.io.ByteArrayOutputStream;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.net.HttpURLConnection;  
  7. import java.net.URL;  
  8.   
  9. import android.annotation.SuppressLint;  
  10. import android.os.StrictMode;  
  11.   
  12.   
  13. /** 接收path服务器端返回的 InputStream, 转换为 json字符串 
  14.  * @author ben 
  15.  * 
  16.  */  
  17. public class HttpUtils {  
  18.       
  19.     public static String getJsonContent(String url_path ,String encode){  
  20.           
  21.         String jsonString = "";  
  22.         try {  
  23.             URL url = new URL(url_path);              
  24.             HttpURLConnection connection = (HttpURLConnection)url.openConnection();  
  25.               
  26.             connection.setConnectTimeout(3000);  
  27.             connection.setRequestMethod("GET");  
  28.             connection.setDoInput(true);  //从服务器获得数据  
  29.               
  30.             int responseCode = connection.getResponseCode();              
  31.               
  32.             if (200 == responseCode) {  
  33.                 jsonString = changeInputStream(connection.getInputStream(),encode);  
  34.                   
  35.             }  
  36.               
  37.           
  38.               
  39.         } catch (Exception e) {  
  40.             // TODO: handle exception  
  41.         }  
  42.           
  43.     //  
  44.         return jsonString;  
  45.     }  
  46.   
  47.     private static String changeInputStream(InputStream inputStream , String encode) throws IOException {  
  48.         // TODO Auto-generated method stub  
  49.         String  jsonString = null;  
  50.           
  51.         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();  
  52.         byte[] data = new byte[1024];  
  53.         int len = 0;  
  54.         while((len=inputStream.read(data))!=-1){  
  55.             outputStream.write(data, 0, len);  
  56.         }  
  57.           
  58.         jsonString = new String(outputStream.toByteArray(), encode);  
  59.   
  60.         inputStream.close();  
  61.           
  62.           
  63.         return jsonString;  
  64.     }  
  65.       
  66. }  

6.activity_matin.xml

[html]  view plain copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical">  
  6.     <Button  
  7.         android:id="@+id/person"  
  8.         android:layout_width="match_parent"  
  9.         android:layout_height="wrap_content"  
  10.         android:text="解析Person数据" />  
  11.     <Button  
  12.         android:id="@+id/persons"  
  13.         android:layout_width="match_parent"  
  14.         android:layout_height="wrap_content"  
  15.         android:text="解析Persons数据" />  
  16.     <Button  
  17.         android:id="@+id/listString"  
  18.         android:layout_width="match_parent"  
  19.         android:layout_height="wrap_content"  
  20.         android:text="解析listString数据" />  
  21.     <Button  
  22.         android:id="@+id/listMap"  
  23.         android:layout_width="match_parent"  
  24.         android:layout_height="wrap_content"  
  25.         android:text="解析listMap数据" />  
  26. </LinearLayout>  

7.activity_other.xml

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.       
  7.     <TextView   
  8.         android:id="@+id/msg"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="wrap_content"          
  11.           
  12.         />  
  13.       
  14. </LinearLayout>  

8.AndroidManifest.xml

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.android.mygson"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.     <uses-sdk  
  7.         android:minSdkVersion="8"  
  8.         android:targetSdkVersion="19" />  
  9.       
  10.     <!-- 添加访问网络的授权 -->  
  11.     <span style="color:#ff0000;"><uses-permission android:name="android.permission.INTERNET" />  
  12. </span>   
  13.     <application  
  14.         android:allowBackup="true"  
  15.         android:icon="@drawable/ic_launcher"  
  16.         android:label="@string/app_name"  
  17.         android:theme="@style/AppTheme" >  
  18.         <activity  
  19.             android:name="com.android.mygson.MainActivity"  
  20.             android:label="@string/app_name" >  
  21.             <intent-filter>  
  22.                 <action android:name="android.intent.action.MAIN" />  
  23.                 <category android:name="android.intent.category.LAUNCHER" />  
  24.             </intent-filter>  
  25.         </activity>  
  26.         <span style="color:#ff0000;"><activity android:name=".OtherActivity"></activity></span>  
  27.     </application>  
  28. </manifest>  


-----------------------------------------------------------------------------------------------------------------

注意一点:

泛型方法

客户端:FastJsonToos.java 泛型方法的写法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值