1. 程式人生 > >Android下Json檔案解析

Android下Json檔案解析

這篇文章為轉載吧 看了兩個大牛的部落格
寫部落格有時也是給自己做個筆記吧
在很多時候都要用到Json解析
Json的定義:一種輕量級的資料交換格式,具有良好的可讀和便於快速編寫的特性。業內主流技術為其提供了完整的解決方案(有點類似於正則表示式 ,獲得了當今大部分語言的支援),從而可以在不同平臺間進行資料交換。JSON採用相容性很高的文字格式,同時也具備類似於C語言體系的行為。 – Json.org
不多說廢話了。。。
工程結構

關於讀取assets和res下的檔案 這篇博文寫的很好~
Android中資原始檔的使用

這是我自己寫的一個小李子:

public class MainActivity
extends Activity {
private AssetManager assetManager; private TextView textView1; private TextView textView2; private TextView textView3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); assetManager = getAssets(); textView1 = (TextView)findViewById(R.id.textview1); textView2 = (TextView)findViewById(R.id.textview2); textView3 = (TextView)findViewById(R.id.textview3); try
{ InputStream inputStream = assetManager.open("data.json"); byte[] buffer = new byte[inputStream.available()]; inputStream.read(buffer); String jsonString = new String(buffer,"gbk"); String path = ""; String description =""; String name = ""
; try { JSONObject jsonObject = new JSONObject(jsonString); JSONArray jsonArray = jsonObject.getJSONArray("data"); for(int i =0;i<jsonArray.length();i++){ JSONObject jsonObjectChild = ((JSONObject)jsonArray.opt(i)); path = path+jsonObjectChild.getString("path"); description = description +jsonObjectChild.getString("description"); name = name+jsonObjectChild.getString("name"); } } catch (JSONException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } textView1.setText(path); textView2.setText(description); textView3.setText(name); } catch (IOException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }

Json檔案 :
{“data”:[{“path”:”images\/pic0.jpg”,”description”:”0這是身啊加速度接啊快樂到家阿卡三等獎阿卡麗風景卡拉是否健康0”,”name”:”使用者資訊0”},{“path”:”images\/pic1.jpg”,”description”:”21這是身啊加速度接啊快樂到家阿卡三等獎阿卡麗風景卡拉是否健康1”,”name”:”使用者資訊1”},{“path”:”images\/pic2.jpg”,”description”:”42這是身啊加速度接啊快樂到家阿卡三等獎阿卡麗風景卡拉是否健康2”,”name”:”使用者資訊2”},{“path”:”images\/pic3.jpg”,”description”:”63這是身啊加速度接啊快樂到家阿卡三等獎阿卡麗風景卡拉是否健康3”,”name”:”使用者資訊3”},{“path”:”images\/pic4.jpg”,”description”:”84這是身啊加速度接啊快樂到家阿卡三等獎阿卡麗風景卡拉是否健康4”,”name”:”使用者資訊4”},{“path”:”images\/pic5.jpg”,”description”:”105這是身啊加速度接啊快樂到家阿卡三等獎阿卡麗風景卡拉是否健康5”,”name”:”使用者資訊5”},{“path”:”images\/pic6.jpg”,”description”:”126這是身啊加速度接啊快樂到家阿卡三等獎阿卡麗風景卡拉是否健康6”,”name”:”使用者資訊6”},{“path”:”images\/pic7.jpg”,”description”:”147這是身啊加速度接啊快樂到家阿卡三等獎阿卡麗風景卡拉是否健康7”,”name”:”使用者資訊7”},{“path”:”images\/pic8.jpg”,”description”:”168這是身啊加速度接啊快樂到家阿卡三等獎阿卡麗風景卡拉是否健康8”,”name”:”使用者資訊8”},{“path”:”images\/pic9.jpg”,”description”:”189這是身啊加速度接啊快樂到家阿卡三等獎阿卡麗風景卡拉是否健康9”,”name”:”使用者資訊9”}],”result”:”1”}

後面那個result是個string 直接getString(“result”);就可以了

效果圖

結果

以上