編輯:關於Android編程
本文實例講述了Android解析JSON數據的方法。分享給大家供大家參考,具體如下:
JSON作為一種“輕量”的數據結構傳遞數據,在JS中有廣泛的應用
Google公司對JSON的解析提供了gson.jar這個包,它不依賴於其他任何JAR包;自從Android3.0中已經合入了該解析器的功能,但之前的版本是沒有的。
findViewById(R.id.parseBtn).setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]"; MainActivity.parseJson(jsonData); } }); public static void parseJson(String jsonStr){ //如果要解析JSON數據,首先要有一個JsonReader對象 JsonReader jsonReader = new JsonReader(new StringReader(jsonStr)); try { //開始遍歷數組(多個JSON對象) jsonReader.beginArray(); while(jsonReader.hasNext()){ //開始遍歷JSON對象(含有多個屬性) jsonReader.beginObject(); while(jsonReader.hasNext()){ String tagName = jsonReader.nextName(); if(tagName.equals("name")){ System.out.println("name --> " + jsonReader.nextString()); }else if(tagName.equals("age")){ System.out.println("age --> " + jsonReader.nextString()); } } //遍歷JSON對象結束 jsonReader.endObject(); } //遍歷數組結束 jsonReader.endArray(); } catch (IOException e) { e.printStackTrace(); } }
將JSON格式轉換為類的步驟如下:
//先定義一個類 public class User { public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } //只將一組數據轉換的方法 findViewById(R.id.parseObj).setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { String jsonData = "{\"name\":\"Michael\",\"age\":20}"; Gson gson = new Gson(); User user = gson.fromJson(jsonData, User.class); System.out.println("name--->" + user.getName()); System.out.println("age---->" + user.getAge()); } }); //將多組數據轉換的方法 findViewById(R.id.parseObjs).setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]"; Type listType = new TypeToken<LinkedList<User>>(){}.getType(); Gson gson = new Gson(); LinkedList<User> users = gson.fromJson(jsonData, listType); for (Iterator iterator = users.iterator(); iterator.hasNext();) { User user = (User) iterator.next(); System.out.println("name--->" + user.getName()); System.out.println("age---->" + user.getAge()); } } });
更多關於Android相關內容感興趣的讀者可查看本站專題:《Android文件操作技巧匯總》、《Android編程開發之SD卡操作方法匯總》、《Android開發入門與進階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
我們重點來研究一下Android抽屜導航 NavigationDrawer。先來感性認識一下這種效果吧:看了很多應用,覺得這種側滑的抽屜效果的菜單很好。不用切換到另一個頁
屬性名 用途 hibernate.dialect 一個HibernateDialect類名允許Hibernate針對特定的關系數據庫生成優化的SQL.取值
上節已實現了畫板中的繪制,刪除,恢復入清空的功能,還有橡皮擦,設置畫筆大小和畫筆顏色沒有實現,這節就將這幾個功能逐一實現。 先看效果圖:
在上一篇文章中,我們實現了新建單板,時鐘 sdram 等一系列初始化工作,串口已經能正確輸出打印信息,但是有錯誤信息。現在,我們就來解決問題。搜索“Flash