你的位置:首页 > 操作系统

[操作系统]Android中Json数据读取与创建


一:  Json的特性和在数据交互中的地位就不用说了,直接看案例。

  首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项目文件目录下是没有assets文件夹的,

  所以需要我们进行创建,创建方法如下:

     

  而在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   @Override22   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       @Override32       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       @Override69       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.