Android中解析JSON
2012-04-16 18:25
253 查看
1.什么是JSON
a.JSON:JavaScript Object Notation;
b.JSON数据是一系列键值对的集合
c.JSON已经被大多数开发人员接受,在网络数据的传输中应用非常广泛
d.JSON相对于XML来讲解析稍微方便一些;
e:JSON VS XML
(1).JSON和XML的数据可读性基本相同
(2).JSON和XML同样拥有丰富的解析手段;
(3)JSON相对于XML来讲,数据体积小;
(4)JSON与JavaScript的交互更加方便
(5).JSON对数据的描述性相对较差
2.JSON的数据格式的特点
一个JSON的例子
3.使用Gson解析JSON
1.添加包,下载地址:
http://code.google.com/p/google-gson/
2.新建一个JsonUtils.java的类
3.Activity_JsonActivity.java的内容如下
package wei.cao;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Activity_JsonActivity extends Activity {
/** Called when the activity is first created. */
private Button btnParseJson=null;
//private String jsonData="{\"name\":\"wei_cao\",\"age\":20}";
private String jsonData="[{\"name\":\"wei_cao\",\"age\":20},{\"name\":\"zhang_san\",\"age\":22}]";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnParseJson=(Button)this.findViewById(R.id.btnParseJson);
btnParseJson.setOnClickListener(new ButtonListener());
}
private class ButtonListener implements OnClickListener
{
@Override
public void onClick(View arg0) {
JsonUtils jsonUtils=new JsonUtils();
jsonUtils.parserUserFromJson(jsonData);
}
}
}
a.JSON:JavaScript Object Notation;
b.JSON数据是一系列键值对的集合
c.JSON已经被大多数开发人员接受,在网络数据的传输中应用非常广泛
d.JSON相对于XML来讲解析稍微方便一些;
e:JSON VS XML
(1).JSON和XML的数据可读性基本相同
(2).JSON和XML同样拥有丰富的解析手段;
(3)JSON相对于XML来讲,数据体积小;
(4)JSON与JavaScript的交互更加方便
(5).JSON对数据的描述性相对较差
2.JSON的数据格式的特点
一个JSON的例子
{ "name":"zhangsan", "address": { "city":"shengzhen", "street":"qinghu" } }
3.使用Gson解析JSON
1.添加包,下载地址:
http://code.google.com/p/google-gson/
2.新建一个JsonUtils.java的类
package wei.cao; import java.io.StringReader; import java.lang.reflect.Type; import java.util.Iterator; import java.util.LinkedList; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; public class JsonUtils { public void parserUserFromJson(String jsonData) { /*[{"name":"wei_cao","age":20},{"name":"zhang_san","age":22}] * 1.开始解析数组 * 2.开始解析对象 * 3.解析键值对 * 4.解析键值对 * 5.解析对象结束 * 6.开始解析对象 * 7.解析键值对 * 8.解析键值对 * 9,解析对象结束 * 10.解析数组结束 * */ //如果需要解析JSON数据,首先要生成一个JsonReader对象 JsonReader reader=new JsonReader(new StringReader(jsonData)); try { reader.beginArray(); while(reader.hasNext()) { reader.beginObject(); while(reader.hasNext()) { String tagName=reader.nextName(); if(tagName.equals("name")) { System.out.println("age--->"+reader.nextString()); } else if(tagName.equals("age")) { System.out.println("age--->"+reader.nextInt()); } } reader.endObject(); } reader.endArray(); } catch (Exception e) { e.printStackTrace(); } } //解析单一Json对象 public void parserUserFromJson1(String jsonData) { Gson gson=new Gson(); User user=gson.fromJson(jsonData, User.class); System.out.print("name--->"+user.getName()); System.out.print("name--->"+user.getAge()); } //解析Json对象的数组 public void parserUserFromJson2(String str) { Type listType=new TypeToken<LinkedList<User>>(){}.getType(); Gson gson=new Gson(); LinkedList<User> users=gson.fromJson(str, listType); for(Iterator<User> iterator=users.iterator();iterator.hasNext();){ User user=(User)iterator.next(); System.out.print("name--->"+user.getName()); System.out.print("name--->"+user.getAge()); } } }
3.Activity_JsonActivity.java的内容如下
package wei.cao; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Activity_JsonActivity extends Activity { /** Called when the activity is first created. */ private Button btnParseJson=null; //private String jsonData="{\"name\":\"wei_cao\",\"age\":20}"; private String jsonData="[{\"name\":\"wei_cao\",\"age\":20},{\"name\":\"zhang_san\",\"age\":22}]"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnParseJson=(Button)this.findViewById(R.id.btnParseJson); btnParseJson.setOnClickListener(new ButtonListener()); } private class ButtonListener implements OnClickListener { @Override public void onClick(View arg0) { JsonUtils jsonUtils=new JsonUtils(); jsonUtils.parserUserFromJson(jsonData); } } }
package wei.cao;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Activity_JsonActivity extends Activity {
/** Called when the activity is first created. */
private Button btnParseJson=null;
//private String jsonData="{\"name\":\"wei_cao\",\"age\":20}";
private String jsonData="[{\"name\":\"wei_cao\",\"age\":20},{\"name\":\"zhang_san\",\"age\":22}]";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnParseJson=(Button)this.findViewById(R.id.btnParseJson);
btnParseJson.setOnClickListener(new ButtonListener());
}
private class ButtonListener implements OnClickListener
{
@Override
public void onClick(View arg0) {
JsonUtils jsonUtils=new JsonUtils();
jsonUtils.parserUserFromJson(jsonData);
}
}
}
相关文章推荐
- [Android_Develop]使用插件快速生成JSon解析类
- Android JSON解析
- Android解析相同接口返回不同格式json数据的方法
- (转)android客户端从服务器端获取json数据并解析的实现代码
- Android json数据解析及简单例子
- android解析JSON,XML数据的请求网络工具类
- android端使用json解析调用Google Directions API返回结果的实例
- Java后台解析android端发送的JSON字符串
- Android客户端从服务端获取数据JSON解析
- Android-原生态、Goson、FastJson解析Json
- android json详细解析
- android中json得解析
- Android 解析后台返回为Json数据的简单例子!!!
- android json 解析 简单示例
- Android json解析动态获取key以及解析技巧
- android里的Json数据解析
- Android下网络请求数据,返回数据显示不全,解析json no value for xxx
- android 解析新浪微博json数据
- Android中Gson解析json
- android proguard注意事项(json的解析请注意)