• 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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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数据格式测试结果: ");  
    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+" ");  
    26.         System.out.println("测试结果2:"+listPerson+" ");  
    27.         System.out.println("测试结果3:"+listString+" ");  
    28.         System.out.println("测试结果4:"+listMap);  
    29.   
    30.     }  
    31.   
    32. }  


    客户端:android_fastjson

    1.MainActivity.java

    [java] view plaincopy
     
    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 plaincopy
     
    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() + " ";  
    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 + " ";  
    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 += " ";  
    70.             }  
    71.   
    72.             textView.setText(listMapString+intent.getStringExtra("jsonString"));  
    73.         }  
    74.           
    75.     }  
    76.   
    77. }  

    3.FastJsonTools.java

    [java] view plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 泛型方法的写法。

    http://blog.csdn.net/neu_yousei/article/details/23184727

  • 相关阅读:
    第十周学习进度条
    第九周学习进度条
    Runner站立会议08
    Runner站立会议07
    构建之法阅读笔记02
    Runner站立会议04
    学习进度条
    Runner站立会议01
    进度条
    返回一个一维整数数组中最大子数组的和
  • 原文地址:https://www.cnblogs.com/cmblogs/p/4916523.html
Copyright © 2020-2023  润新知