一: Json的特性和在數據交互中的地位就不用說了,直接看案例。
首先在android studio中創建assets文件目錄,用於存放Json數據文件,android studio 1.3 默認項目文件目錄下是沒有assets文件夾的,
所以需要我們進行創建,創建方法如下:
創建好assets文件目錄以后,在其目錄下創建一個Text.json文件。
二:如何獲得assets文件目錄下的Json數據:
在eclipse下是:InputStreamReader(getAssets().open("Text.json"),"UTF-8");獲得該文件數據,並以InputStream返回數據。
而在android studio則是通過:JsonLearn.this.getClass().getClassLoader().getResourceAsStream("assets/" + "Text.json");返回相應InputStream.
三:案例展示:
1:案例項目app界面如下,通過按鈕分別實現Json數據的讀取和創建,並展示在TextView中。
2:代碼如下:
1 package activity.cyq.datalrearn; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.TextView; 7 8 import org.json.JSONArray; 9 import org.json.JSONException; 10 import org.json.JSONObject; 11 12 import java.io.BufferedReader; 13 import java.io.IOException; 14 import java.io.InputStream; 15 import java.io.InputStreamReader; 16 17 18 public class JsonLearn extends AppCompatActivity { 19 private TextView writeText, readText; 20 21 @Override 22 protected void onCreate(Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.activity_json_learn); 25 26 readText = (TextView) findViewById(R.id.readJsonText); 27 writeText = (TextView) findViewById(R.id.writeJsonText); 28 29 /*讀取Json數據*/ 30 findViewById(R.id.readJsioBtn).setOnClickListener(new View.OnClickListener() { 31 @Override 32 public void onClick(View v) { 33 /*獲取到assets文件下的TExt.json文件的數據,並以輸出流形式返回。*/ 34 InputStream is = JsonLearn.this.getClass().getClassLoader().getResourceAsStream("assets/" + "Text.json"); 35 InputStreamReader streamReader = new InputStreamReader(is); 36 BufferedReader reader = new BufferedReader(streamReader); 37 String line; 38 StringBuilder stringBuilder = new StringBuilder(); 39 try { 40 while ((line = reader.readLine()) != null) { 41 // stringBuilder.append(line); 42 stringBuilder.append(line); 43 } 44 reader.close(); 45 reader.close(); 46 is.close(); 47 } catch (IOException e) { 48 e.printStackTrace(); 49 } 50 try { 51 JSONObject person = new JSONObject(stringBuilder.toString()); 52 JSONArray infArray = person.getJSONArray("inf"); 53 for (int i = 0; i < infArray.length(); i++) { 54 JSONObject inf_Array = infArray.getJSONObject(i); 55 readText.append("name:" + inf_Array.getString("name") + "\n"); 56 readText.append("IdCard:" + inf_Array.getString("IdCard")); 57 readText.append("age:" + inf_Array.getInt("age")); 58 readText.append("married:" + inf_Array.getBoolean("married")); 59 } 60 } catch (JSONException e) { 61 e.printStackTrace(); 62 } 63 } 64 }); 65 66 /*創建Json數據並顯示*/ 67 findViewById(R.id.writeJsioBtn).setOnClickListener(new View.OnClickListener() { 68 @Override 69 public void onClick(View v) { 70 try { 71 JSONObject inf = new JSONObject(); 72 inf.put("number", 1); 73 74 JSONArray array = new JSONArray(); 75 76 JSONObject arr_1 = new JSONObject(); 77 arr_1.put("name", "張三"); 78 arr_1.put("age", 26); 79 arr_1.put("IdCard", "2345XC"); 80 arr_1.put("married", true); 81 82 JSONObject arr_2 = new JSONObject(); 83 arr_2.put("name", "李四"); 84 arr_2.put("age", 45); 85 arr_2.put("IdCard", "@222DC"); 86 arr_2.put("married", true); 87 88 array.put(0, arr_1); 89 array.put(1, arr_2); 90 inf.put("inf", array); 91 writeText.setText(inf.toString()); 92 93 } catch (JSONException e) { 94 e.printStackTrace(); 95 } 96 } 97 }); 98 } 99 }
以上為通過android原生態API來對Json數據進行簡單的處理,項目開發中可通過Gson(谷歌) Fast-json( 阿里巴巴 )這兩款Json處理的API.