zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    2016"百度之星"
    codeforces 55 div2 C.Title 模拟
    codeforces 98 div2 C.History 水题
    codeforces 97 div2 C.Replacement 水题
    codeforces 200 div2 C. Rational Resistance 思路题
    bzoj 2226 LCMSum 欧拉函数
    hdu 1163 九余数定理
    51nod 1225 余数的和 数学
    bzoj 2818 gcd 线性欧拉函数
    Codeforces Round #332 (Div. 2)D. Spongebob and Squares 数学
  • 原文地址:https://www.cnblogs.com/cmblogs/p/4916523.html
Copyright © 2011-2022 走看看