編輯:關於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抽屜導航Navigation Drawer實例解析
我們重點來研究一下Android抽屜導航 NavigationDrawer。先來感性認識一下這種效果吧:看了很多應用,覺得這種側滑的抽屜效果的菜單很好。不用切換到另一個頁
hibernate配置屬性
屬性名 用途 hibernate.dialect 一個HibernateDialect類名允許Hibernate針對特定的關系數據庫生成優化的SQL.取值
android項目 之 記事本(9) ----- 畫板功能之橡皮擦、畫筆大小和畫筆顏色
上節已實現了畫板中的繪制,刪除,恢復入清空的功能,還有橡皮擦,設置畫筆大小和畫筆顏色沒有實現,這節就將這幾個功能逐一實現。 先看效果圖:
移植u-boot2012.04.1 -》2440 (二)norflash 識別
在上一篇文章中,我們實現了新建單板,時鐘 sdram 等一系列初始化工作,串口已經能正確輸出打印信息,但是有錯誤信息。現在,我們就來解決問題。搜索“Flash