android开发之JSON数据解析

页面导航:首页 > 网络编程 > JavaScript > android开发之JSON数据解析

android开发之JSON数据解析

来源: 作者: 时间:2016-02-05 11:06 【

android开发之JSON数据解析本博文主要讲述的是使用google的lib库gson解析JSON数据的方法,因为android自带的JSON数据解析器对只可以在android 3 0以上版本才能适用,如果需要使用gson,我们需要

android开发之JSON数据解析

本博文主要讲述的是使用google的lib库gson解析JSON数据的方法,因为android自带的JSON数据解析器对只可以在android 3.0以上版本才能适用,如果需要使用gson,我们需要在项目中添加gson的lib库文件,然后add path。详细代码如下:
MainActivyty.java:
package com.example.analysisjson;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class MainActivity extends Activity {


private Button myButton = null;
private String jsonData = "[{\"name\":\"zhangsan\",\"age\":21},{\"name\":\"lisi\",\"age\":33}]";
private String jsonOjectData = "{\"name\":\"zhangsan\",\"age\":21}";
private String jsonOjectsData = "[{\"name\":\"zhangsan\",\"age\":21},{\"name\":\"lisi\",\"age\":33}]";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myButton = (Button)findViewById(R.id.myButton);
myButton.setOnClickListener(new SetButtonListener());
}

class SetButtonListener implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
JsonUtils jsonUtils = new JsonUtils();
//解析JSON数组
//jsonUtils.parseArrayData(jsonData);
//解析单个JSON对象
//jsonUtils.parseObjectData(jsonOjectData);
//解析多个JSON对象
jsonUtils.parseObjectsData(jsonOjectsData);
}

}


@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;
}


}


JsonUtils.java:

package com.example.analysisjson;


import java.io.IOException;
import java.io.StringReader;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.LinkedList;


import android.R.integer;




import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;


/*
* 应为自带的JsonReader只支持3.0以上的版本,
* 此处主要是采用的google 的 gson解析器,解析json,没有版本的限制
* 需要在项目中添加gson的libs
* */


public class JsonUtils {

/*
* example:"[{\"name\":\"zhangsan\",\"age\":21},{\"name\":\"lisi\",\"age\":33}]"
* JSON数组解析的步骤如下:
* 1、开始解析数组
* 2、开始解析对象
* 3、解析键值对
* 4、解析键值对结束
* 5、解析对象结束
* 6、解析数组结束
* */
public void parseArrayData(String jsonData){

try {
JsonReader jsonReader = new JsonReader(new StringReader(jsonData));
jsonReader.beginArray();
while(jsonReader.hasNext()){
jsonReader.beginObject();
while(jsonReader.hasNext()){
String tagName = jsonReader.nextName();
if(tagName.equals("name")){
System.out.print("name --> " + jsonReader.nextString());
}else if(tagName.equals("age")){
System.out.println(";age --> " + jsonReader.nextInt());
}
}
jsonReader.endObject();
}
jsonReader.endArray();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}


/*
* example:"{\"name\":\"zhangsan\",\"age\":21}"
* 使用google GSON解析单个JSON对象
*
* */
public void parseObjectData(String jsonData){
try{
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.print("name --> " + user.getName());
System.out.println(";age -- > " + user.getAge());
}catch(Exception e){
e.printStackTrace();
}
}


/*
* example:"{\"name\":\"zhangsan\",\"age\":21}"
* 使用google GSON解析多个JSON对象
*
* */
public void parseObjectsData(String jsonData){
try{
Type type = (Type) new TypeToken>(){}.getType();
Gson gson = new Gson();

LinkedList users = gson.fromJson(jsonData, type);

for(Iterator iterator = users.iterator(); iterator.hasNext();){
User user = iterator.next();
System.out.print("name --> " + user.getName());
System.out.println(";age -- > " + user.getAge());
}

}catch(Exception e){
e.printStackTrace();
}
}



}

主布局文件main.java:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >


android:id="@+id/myText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<