从无到有,从来没有接触过Json,以及与服务器的交互。然后慢慢的熟悉,了解了一点。把我学到的东西简单的做个总结,也做个记录,万一以后用到,就不用到处找了。

 

主要是简单的数据交互,就是字符串的交互,传数据,取数据。刚开始用的普通方法,后来研究了下xUtils框架。

服务器端有人开发,这一块不是我负责,所以我只负责客户端传数据以及接受数据后的处理就OK了。

 

传递数据的形式,主要是看服务端的接口怎么写,服务器是接受JSON字符串,还是要form表单格式(我认为form表单格式就是键值对)。

 

xUtils:

不需要关联library,就下载jar包,复制到libs下就可以了,这是下载地址:

还有就是,你如果想使用library到自己的项目下,注意一点主项目文件和library库文件,必须在同一个文件夹目录下,否则运行项目是报错的


项目原码地址:https://github.com/wyouflf/xUtils

http://www.gbtags.com/gb/share/4360.htm

 

Volley:

初识Volley的基本用法:http://www.apihome.cn/view-detail-70211.html

使用Volley加载网络图片:http://www.apihome.cn/view-detail-70212.html

定制自己的Request:http://www.apihome.cn/view-detail-70213.html

 

还有一些框架:KJFeame和Afinal

KJFrame:


http://www.codeceo.com/article/Android-orm-kjframeforandroid.html

 

1.要发送到服务器端的是以JSON字符串的形式发送的。(下面的格式)


1. {"device":"hwG620S-UL00","brand":"HUAWEI","model":"G620S-UL00","imei":"865242025001258","romversion":"G620S-UL00V100R001C17B264"}

1. private void sendData1() {  
2. new Thread(new Runnable() {  
3. @Override  
4. public void run() {  
5. "2222");  
6. try {  
7.   
8. new HttpPost(ACTIVATE_PATH);// post请求  
9. // 先封装一个JSON对象  
10. new JSONObject();  
11. "romversion", serviceInfoMap.get("romversion"));  
12. "brand", serviceInfoMap.get("brand"));  
13. "model", serviceInfoMap.get("model"));  
14. "device", serviceInfoMap.get("device"));  
15. "imei", serviceInfoMap.get("imei"));  
16. // 绑定到请求Entry  
17. new StringEntity(param.toString(),  
18. "utf-8");  
19.                     post.setEntity(se);  
20. "JSON为---> " + param.toString());  
21. // JSON为--->  
22. // {"device":"hwG620S-UL00","brand":"HUAWEI","model":"G620S-UL00","imei":"8<span style="white-space:pre">                 </span>// 65242025001258","romversion":"G620S-UL00V100R001C17B264"}  
23.   
24. // 发送请求  
25. new BasicHttpParams();  
26. new DefaultHttpClient(  
27.                             params);  
28.                     localDefaultHttpClient.getParams().setParameter(  
29. "http.connection.timeout", Integer.valueOf(30000));  
30.                     localDefaultHttpClient.getParams().setParameter(  
31. "http.socket.timeout", Integer.valueOf(30000));  
32.                     HttpResponse response = localDefaultHttpClient  
33.                             .execute(post);  
34. // 得到应答的字符串,这也是一个JSON格式保存的数据  
35.                     String retStr = EntityUtils.toString(response.getEntity());  
36. // 生成JSON对象  
37. new JSONObject(retStr);  
38. int status_value = response.getStatusLine().getStatusCode();  
39. "" + status_value);  
40. "";  
41. "status");  
42.                     Log.i(TEST_TAG, statusValue);  
43. if (!statusValue.equals("")) {  
44. // 如果不为空,说明取到了数据,然后就先关闭进去条  
45.                         mHandler.sendEmptyMessage(CLOSE_DIALOG);  
46. // 然后判断值是否==1,来决定弹出哪个dialog  
47. // 激活成功,就把值传到系统的contentprovider,然后永久保存  
48. if (Integer.parseInt(statusValue) == 1) {  
49.                             mHandler.sendEmptyMessage(SHOW_SUCCESS);  
50. // 将值设置成1  
51.                             Settings.System.putInt(getContentResolver(),  
52. 1);  
53. else { // 只要是不为1外的其他值,都算失败,弹出失败的dialog  
54.                             mHandler.sendEmptyMessage(SHOW_FAILURE);  
55.                         }  
56.                     }  
57.   
58. catch (UnsupportedEncodingException e) {  
59.                     e.printStackTrace();  
60. catch (ClientProtocolException e) {  
61.                     e.printStackTrace();  
62.                     mHandler.sendEmptyMessage(CONTENT_STATUS);  
63. catch (SocketException e) {  
64.                     mHandler.sendEmptyMessage(CONTENT_STATUS);  
65. catch (IOException e) {  
66.                     mHandler.sendEmptyMessage(CONTENT_STATUS);  
67.                     e.printStackTrace();  
68. catch (JSONException e) {  
69.                     mHandler.sendEmptyMessage(CONTENT_STATUS);  
70.                     e.printStackTrace();  
71.                 }  
72.             }  
73.         }).start();  
74.     }


 

 

2.以form表单的格式发送到服务端

将传递的数据打印出来,格式是这样的,和json串是不一样的。[romversion=G620S-UL00V100R001C17B264, brand=HUAWEI, model=G620S-UL00, device=hwG620S-UL00, imei=865242024756522]

1. private void sendData1() {  
2. new Thread(new Runnable() {  
3. @Override  
4. public void run() {  
5. "2222");  
6. try {  
7.   
8. new HttpPost(ACTIVATE_PATH);// post请求  
9. // 设置添加对象  
10. new ArrayList<NameValuePair>();  
11. new BasicNameValuePair("romversion",  
12. "romversion")));  
13. new BasicNameValuePair("brand",  
14. "brand")));  
15. new BasicNameValuePair("model",  
16. "model")));  
17. new BasicNameValuePair("device",  
18. "device")));  
19. new BasicNameValuePair("imei",  
20. "imei")));  
21.                     Log.i(TEST_TAG, paramsForm.toString());  
22. new UrlEncodedFormEntity(paramsForm,  
23.                             HTTP.UTF_8));  
24.   
25. // 发送请求  
26. new BasicHttpParams();  
27. new DefaultHttpClient(  
28.                             params);  
29.                     localDefaultHttpClient.getParams().setParameter(  
30. "http.connection.timeout", Integer.valueOf(30000));  
31.                     localDefaultHttpClient.getParams().setParameter(  
32. "http.socket.timeout", Integer.valueOf(30000));  
33.                     HttpResponse response = localDefaultHttpClient  
34.                             .execute(post);  
35. // 得到应答的字符串,这也是一个JSON格式保存的数据  
36.                     String retStr = EntityUtils.toString(response.getEntity());  
37. // 生成JSON对象  
38. new JSONObject(retStr);  
39. int status_value = response.getStatusLine().getStatusCode();  
40. "" + status_value);  
41. "";  
42. "status");  
43. "status: " + statusValue);  
44. "datatime: " + result.getString("datatime"));  
45. "message: " + result.getString("message"));  
46. if (!statusValue.equals("")) {  
47. // 如果不为空,说明取到了数据,然后就先关闭进去条  
48.                         mHandler.sendEmptyMessage(CLOSE_DIALOG);  
49. // 然后判断值是否==1,来决定弹出哪个dialog  
50. // 激活成功,就把值传到系统的contentprovider,然后永久保存  
51. if (Integer.parseInt(statusValue) == 1) {  
52. // 将值设置成1。需要加权限  
53.                             Settings.System.putInt(getContentResolver(),  
54. 1);  
55.                             mHandler.sendEmptyMessage(SHOW_SUCCESS);  
56. else { // 只要是不为1外的其他值,都算失败,弹出失败的dialog  
57.                             mHandler.sendEmptyMessage(SHOW_FAILURE);  
58.                         }  
59.                     }  
60.   
61. catch (UnsupportedEncodingException e) {  
62.                     e.printStackTrace();  
63.                     mHandler.sendEmptyMessage(SHOW_FAILURE);  
64.                     mHandler.sendEmptyMessage(CONTENT_STATUS);  
65. catch (ClientProtocolException e) {  
66.                     e.printStackTrace();  
67.                     mHandler.sendEmptyMessage(SHOW_FAILURE);  
68.                     mHandler.sendEmptyMessage(CONTENT_STATUS);  
69. catch (SocketException e) {  
70.                     mHandler.sendEmptyMessage(SHOW_FAILURE);  
71.                     mHandler.sendEmptyMessage(CONTENT_STATUS);  
72. catch (IOException e) {  
73.                     mHandler.sendEmptyMessage(SHOW_FAILURE);  
74.                     mHandler.sendEmptyMessage(CONTENT_STATUS);  
75.                     e.printStackTrace();  
76. catch (JSONException e) {  
77.                     mHandler.sendEmptyMessage(SHOW_FAILURE);  
78.                     mHandler.sendEmptyMessage(CONTENT_STATUS);  
79.                     e.printStackTrace();  
80.                 }  
81.             }  
82.         }).start();  
83.     }




 

3.xUtils框架的post上传数据,表单格式

 

1. /** 
2.      * 表单格式传送(键值对) 
3.      */  
4. private void xUtilsFrame() {  
5. new RequestParams();  
6. "romversion", serviceInfoMap.get("romversion"));  
7. "brand", serviceInfoMap.get("brand"));  
8. "model", serviceInfoMap.get("model"));  
9. "device", serviceInfoMap.get("device"));  
10. "imei", serviceInfoMap.get("imei"));  
11.         Log.i(TEST_TAG, params.getEntity().toString());  
12.   
13. new HttpUtils();  
14. 1000 * 10);  
15.         http.send(HttpMethod.POST, ACTIVATE_PATH, params,  
16. new RequestCallBack<String>() {  
17.   
18. @Override  
19. public void onSuccess(ResponseInfo<String> responseInfo) {  
20. "接收到的结果为---》" + responseInfo.result);  
21. "请求码为--->" + responseInfo.statusCode);  
22. try {  
23. new JSONObject(  
24.                                     responseInfo.result);  
25. "message"));  
26. if (jsonObject.getString("status").equals("1")) {  
27.                                 mHandler.sendEmptyMessage(CLOSE_DIALOG);  
28.                                 mHandler.sendEmptyMessage(SHOW_SUCCESS);  
29.                                 Settings.System.putInt(getContentResolver(),  
30. 1);  
31. else {  
32.                                 mHandler.sendEmptyMessage(CLOSE_DIALOG);  
33.                                 mHandler.sendEmptyMessage(SHOW_FAILURE);  
34.                             }  
35. catch (JSONException e) {  
36. // TODO Auto-generated catch block  
37.                             e.printStackTrace();  
38.                         }  
39.                     }  
40.   
41. @Override  
42. public void onFailure(HttpException error, String msg) {  
43. "失败了",  
44.                                 Toast.LENGTH_LONG).show();  
45.                     }  
46.                 });  
47.     }



 

4.xUtils框架,json数据格式

 

1. /** 
2.      * 发送json字符串 
3.      */  
4. private void xUtilsFrame2() {  
5. try {  
6. new RequestParams();  
7. // 先封装一个JSON对象  
8. new JSONObject();  
9. "romversion", serviceInfoMap.get("romversion"));  
10. "brand", serviceInfoMap.get("brand"));  
11. "model", serviceInfoMap.get("model"));  
12. "device", serviceInfoMap.get("device"));  
13. "imei", serviceInfoMap.get("imei"));  
14. new StringEntity(param.toString(), "utf-8");  
15.             params.setBodyEntity(sEntity);  
16. "params-->" + params.toString()); // params-->com.lidroid.xutils.http.RequestParams@41c74e10  
17. "param-->" + param.toString()); // param-->{"device":"hwG620S-UL00","brand":"HUAWEI","model":"G620S-UL00","imei":"865242024756522","romversion":"G620S-UL00V100R001C17B264"}  
18. "param-entity-->" + sEntity.toString()); // param-entity-->org.apache.http.entity.StringEntity@41c482f0  
19.   
20. new HttpUtils();  
21. 1000 * 10);  
22.             http.send(HttpMethod.POST, ACTIVATE_PATH, params,  
23. new RequestCallBack<String>() {  
24.   
25. @Override  
26. public void onSuccess(ResponseInfo<String> responseInfo) {  
27. "接收到的结果为---》" + responseInfo.result); // 接收到的结果为---》{"status":"2","datatime":1437444596,"message":"参数无效!"}  
28. "请求码为--->"  
29.                                     + responseInfo.statusCode);  
30. try {  
31. new JSONObject(  
32.                                         responseInfo.result);  
33. "message"));  
34. if (jsonObject.getString("status").equals("1")) {  
35.                                     mHandler.sendEmptyMessage(CLOSE_DIALOG);  
36.                                     mHandler.sendEmptyMessage(SHOW_SUCCESS);  
37.                                     Settings.System.putInt(  
38.                                             getContentResolver(),  
39. 1);  
40. else {  
41.                                     mHandler.sendEmptyMessage(CLOSE_DIALOG);  
42.                                     mHandler.sendEmptyMessage(SHOW_FAILURE);  
43.                                 }  
44. catch (JSONException e) {  
45. // TODO Auto-generated catch block  
46.                                 e.printStackTrace();  
47.                             }  
48.                         }  
49.   
50. @Override  
51. public void onFailure(HttpException error, String msg) {  
52. "失败了",  
53.                                     Toast.LENGTH_LONG).show();  
54.                         }  
55.                     });  
56.   
57. catch (JSONException e1) {  
58. // TODO Auto-generated catch block  
59.             e1.printStackTrace();  
60. catch (UnsupportedEncodingException e) {  
61. // TODO Auto-generated catch block  
62.             e.printStackTrace();  
63.         }  
64.     }



 

5.Volley框架:StringRequest,from表单

    1. /** 
    2.      * Volley框架:StirngRequest(需要导入Volley.jar包到libs目录下,需要加internet权限) 
    3.      */  
    4. private void volleyFrameSR() {  
    5. // 第一步:创建一个RequestQueue对象  
    6. final RequestQueue mQueue = Volley.newRequestQueue(this);  
    7. // 第二步:创建一个StringRequest对象  
    8. new StringRequest(Method.POST,  
    9. new Response.Listener<String>() {  
    10. // 服务器响应成功的回调  
    11. @Override  
    12. public void onResponse(String response) {  
    13. "返回结果为--->" + response);  
    14. try {  
    15. new JSONObject(response);  
    16.                             Log.i(TEST_TAG,  
    17. "status-->"  
    18. "status"));  
    19.                             Log.i(TEST_TAG,  
    20. "message-->"  
    21. "message"));  
    22. "StringRequest");  
    23.                             mHandler.sendEmptyMessage(SHOW_SUCCESS);  
    24.                             mHandler.sendEmptyMessage(CLOSE_DIALOG);  
    25. catch (JSONException e) {  
    26. // TODO Auto-generated catch block  
    27.                             e.printStackTrace();  
    28.                         }  
    29.                     }  
    30.   
    31. new Response.ErrorListener() {  
    32. // 服务器响应失败的回调  
    33. @Override  
    34. public void onErrorResponse(VolleyError error) {  
    35.                         Log.e(TEST_TAG, error.getMessage(), error);  
    36.                         mHandler.sendEmptyMessage(SHOW_FAILURE);  
    37.                     }  
    38.                 }) {  
    39.   
    40. @Override  
    41. protected Map<String, String> getParams() throws AuthFailureError {  
    42. new HashMap<String, String>();  
    43. "romversion", serviceInfoMap.get("romversion"));  
    44. "brand", serviceInfoMap.get("brand"));  
    45. "model", serviceInfoMap.get("model"));  
    46. "device", serviceInfoMap.get("device"));  
    47. "imei", serviceInfoMap.get("imei"));  
    48. "发送结果为--->" + map.toString());  
    49. // 发送结果为--->{device=hwG620S-UL00, brand=HUAWEI,  
    50. // model=G620S-UL00, imei=865242024756522,  
    51. // romversion=G620S-UL00V100R001C17B264}  
    52.   
    53. return map;  
    54.             }  
    55.         };  
    56. "StringRequest");  
    57. // 第三步:将StringRequest对象添加到RequestQueue里面  
    58.         mQueue.add(stringRequest);  
    59.     }


    这个写了太多的代码,这是方法的原型:

    1. StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener) {    
    2. @Override    
    3. protected Map<String, String> getParams() throws AuthFailureError {    
    4. new HashMap<String, String>();    
    5. "params1", "value1");    
    6. "params2", "value2");    
    7. return map;    
    8.     }    
    9. };
    1.   



    根据我服务器的接受模式,我觉得他发送的结果是form表单格式

     

    6.Volley框架: JsonObjectRequest。 

    因为它的方法中传递的的请求参数为JsonObject,目前还没有找到传递form格式的方法。

     

    1. /** 
    2.      * Volley框架:JsonObjectRequest 
    3.      */  
    4. private void volleyFrameJR() {  
    5. // 第一步:创建一个RequestQueue对象  
    6. final RequestQueue mQueue = Volley.newRequestQueue(this);  
    7.   
    8. new JsonObjectRequest(  
    9. null,  
    10. new Response.Listener<JSONObject>() {  
    11.   
    12. @Override  
    13. public void onResponse(JSONObject response) {  
    14. "返回结果为--->" + response.toString());  
    15. try {  
    16. // JSONObject jsonObject = new JSONObject(response);  
    17.                             Log.i(TEST_TAG,  
    18. "status-->" + response.getString("status"));  
    19.                             Log.i(TEST_TAG,  
    20. "message-->"  
    21. "message"));  
    22.                             mHandler.sendEmptyMessage(SHOW_SUCCESS);  
    23.                             mHandler.sendEmptyMessage(CLOSE_DIALOG);  
    24. catch (JSONException e) {  
    25. // TODO Auto-generated catch block  
    26.                             e.printStackTrace();  
    27.                         }  
    28.                     }  
    29. new Response.ErrorListener() {  
    30.   
    31. @Override  
    32. public void onErrorResponse(VolleyError error) {  
    33.                         Log.e(TEST_TAG, error.getMessage(), error);  
    34.                         mHandler.sendEmptyMessage(SHOW_FAILURE);  
    35.                     }  
    36.                 }) {  
    37.               
    38. @Override  
    39. protected Map<String, String> getPostParams()  
    40. throws AuthFailureError {  
    41. new HashMap<String, String>();  
    42. "romversion", serviceInfoMap.get("romversion"));  
    43. "brand", serviceInfoMap.get("brand"));  
    44. "model", serviceInfoMap.get("model"));  
    45. "device", serviceInfoMap.get("device"));  
    46. "imei", serviceInfoMap.get("imei"));  
    47. "发送结果为--->" + map.toString());  
    48. return map;  
    49.             }  
    50.   
    51.         };  
    52. // 没有这句就无法交互  
    53.   
    54.     }



    这种方式应该可以,好像getParams也可以,因为服务器写的不是接受json格式数据,所以我没法测试。

     

    还有就是去掉重写的方法,不管是getPostParams还是getParams,然后将里面的map集合内容写道,new JsonObjectRequest之前,然后在JsonObject  jsonObject = newJsonObject(map),然后将jsonObject作为第三个参数,这样就传递了一个json字符串到服务器。

     

     

     

    7.JsonObject和JsonArray

     

    1. //JsonObject和JsonArray区别就是JsonObject是对象形式,JsonArray是数组形式  
    2. //创建JsonObject第一种方法  
    3. new JSONObject();  
    4. "UserName", "ZHULI");  
    5. "age", "30");  
    6. "workIn", "ALI");  
    7. "jsonObject1:" + jsonObject);  
    8.           
    9. //创建JsonObject第二种方法  
    10. new HashMap<String, String>();  
    11. "UserName", "ZHULI");  
    12. "age", "30");  
    13. "workIn", "ALI");  
    14. "jsonObject2:" + JSONObject.fromObject(hashMap));  
    15.           
    16. //创建一个JsonArray方法1  
    17. new JSONArray();  
    18. 0, "ZHULI");  
    19. 1, "30");  
    20. 2, "ALI");  
    21. "jsonArray1:" + jsonArray);  
    22.           
    23. //创建JsonArray方法2  
    24. new ArrayList<String>();  
    25. "ZHULI");  
    26. "30");  
    27. "ALI");  
    28. "jsonArray2:" + JSONArray.fromObject(arrayList));  
    29.           
    30. //如果JSONArray解析一个HashMap,则会将整个对象的放进一个数组的值中  
    31. "jsonArray FROM HASHMAP:" + JSONArray.fromObject(hashMap));  
    32.           
    33. //组装一个复杂的JSONArray  
    34. new JSONObject();  
    35. "UserName", "ZHULI");  
    36. "age", "30");  
    37. "workIn", "ALI");  
    38. "Array", arrayList);  
    39. "jsonObject2:" + jsonObject2);




    system结果:

    1. jsonObject1:{"UserName":"ZHULI","age":"30","workIn":"ALI"}  
    2. jsonObject2:{"workIn":"ALI","age":"30","UserName":"ZHULI"}  
    3. jsonArray1:["ZHULI","30","ALI"]  
    4. jsonArray2:["ZHULI","30","ALI"]  
    5. jsonArray FROM HASHMAP:[{"workIn":"ALI","age":"30","UserName":"ZHULI"}]  
    6. jsonObject2:{"UserName":"ZHULI","age":"30","workIn":"ALI","Array":["ZHULI","30","ALI"]}



    1. </pre><pre name="code" class="html" style="font-size: 13px; margin-top: 0px; margin-bottom: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; line-height: 19.5px; background-color: rgb(254, 254, 242);">




    1. <span style="font-size:24px;">android读取json数据(遍历JSONObject和JSONArray)</span>

    1. <pre name="code" class="java">public String getJson(){    
    2. jsonString = "{\"FLAG\":\"flag\",\"MESSAGE\":\"SUCCESS\",\"name\":[{\"name\":\"jack\"},{\"name\":\"lucy\"}]}";//json字符串    
    3.         try {    
    4. result = new JSONObject(jsonstring);//转换为JSONObject    
    5. num = result.length();    
    6. nameList = result.getJSONArray("name");//获取JSONArray    
    7. length = nameList.length();    
    8. aa = "";    
    9. i = 0; i < length; i++){//遍历JSONArray    
    10.                 Log.d("debugTest",Integer.toString(i));    
    11. oj = nameList.getJSONObject(i);    
    12. aa = aa + oj.getString("name")+"|";    
    13.                     
    14.             }    
    15. <?> it = result.keys();    
    16. aa2 = "";    
    17. bb2 = null;    
    18.             while(it.hasNext()){//遍历JSONObject    
    19. bb2 = (String) it.next().toString();    
    20. aa2 = aa2 + result.getString(bb2);    
    21.                     
    22.             }    
    23.             return aa;    
    24.         } catch (JSONException e) {    
    25.             throw new RuntimeException(e);    
    26.         }    
    27.     }



    8.生成数组json串



    我想要生成的json串为:



    { 
      
    "languages": [//应用市场所支持的语种信息 
      
      { 
      
    "name":"汉语", 
      
    "code":"hy", 
      
    "selected":"true" 
      
      }, 
      
      { 
      
    "name":"蒙古语", 
      
    "code":"mn" 
      
    "selected":"false" 
      
      } 
      
    ], 
      
    "applist_versioncode":"0", 
      
    "applist_num":"2",





    代码如下:

    1. private void createJsonData() {  
    2. try {  
    3. // 存放总的json数据的容器  
    4. new JSONObject();  
    5.   
    6. /* 
    7.              * 首先,总的josn的第一条的key是languages,他的value是一个数组,数组有两个元素,所以, 
    8.              * languages对应的value是一个JsonArray对象 
    9.              */  
    10. // 此时生成一个jsonarray来存放language的值的数组  
    11. new JSONArray();  
    12. // 首先将language的第一条数据,生成jsonObject对象  
    13. new JSONObject();  
    14. "name", "汉语");  
    15. "code", "hy");  
    16. "selected", "true");  
    17. // 此时,将数组的第一组数据添加到jsonarray中  
    18. 0, joLang0);  
    19.   
    20. // 首先将language的第二条数据,生成jsonObject对象  
    21. new JSONObject();  
    22. "name", "蒙古语");  
    23. "code", "mn");  
    24. "selected", "false");  
    25. // 此时,将数组的第一组数据添加到jsonarray中  
    26. 1, joLang1);  
    27.   
    28. // 此时,langauge的值已经生成,就是jsonarraylang这个数组格式的数据  
    29. // 然后,将其添加到总的jsonobject中  
    30. "languages", jsonArrayLang);  
    31. // 添加总jsonobject容器的第二条数据,"applist_versioncode":"0",  
    32. "applist_versioncode", "0");  
    33. // 添加总jsonobject容器的第三条数据,"applist_num":"2",  
    34. "applist_num", "2");  
    35.   
    36.             System.out.println(jsonObject.toString());  
    37.   
    38. catch (JSONException e) {  
    39. // TODO Auto-generated catch block  
    40.             e.printStackTrace();  
    41.         }  
    42.     }

    最后输出结果为


    android如何使用服务器实现数据库 android与服务器端数据交互_JSON





     




     

    9.修改json串(带数组)

     


    1. String stt = "{\"languages\":[{\"name\":\"汉语\",\"code\":\"hy\"},"  
    2. "{\"name\":\"蒙古语\",\"code\":\"mn\"}]}";




    1. <span style="white-space:pre">                </span>try {  
    2. new JSONObject(stt);  
    3. "修改之前---->" + jsonObject.toString());  
    4. "languages");  
    5. "修改之前---->" + jsonArray.toString());  
    6. "jsonArray.length()---->"  
    7.                             + jsonArray.length());  
    8. for (int i = 0; i < jsonArray.length(); i++) {  
    9.                         JSONObject jsonObject2 = (JSONObject) jsonArray.opt(i);  
    10. "jsonObject2---->" + i + "-----"  
    11.                                 + jsonArray.toString());  
    12. if (i == (jsonArray.length() - 1)) {  
    13. "修改之前---->");  
    14. "name", "法国与");  
    15.                             jsonArray.put(i, jsonObject2);  
    16.                         }  
    17.                     }  
    18.                     jsonArray.put(jsonArray.length(),  
    19. 1));  
    20. "languages", jsonArray);  
    21. "修改之后---->" + jsonObject.toString());  
    22. catch (JSONException e) {  
    23.                     e.printStackTrace();  
    24.                 }



    修改json串,就需要一层一层读出来,然后key值存在的时候,直接put新值,就会直接替换掉,然后在一层一层添加回去。这样就可以了