android json数据解析
来源:互联网 发布:网络棋牌频道直播象棋 编辑:程序博客网 时间:2024/06/14 15:28
此demo实现了json数据的解析,有三种解析方式。
demo:下载地址,gson.jar在libs文件夹中,注意添加。
MainActivity.java:
package fk.androiddemo_019;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import java.util.Iterator;import java.util.LinkedList;//www。json。org 这是Json的官方网站//json是一种类似xml的传输,通信用的数据格式//使用Gson需要你往libs中导入一个gson.jar类库包public class MainActivity extends Activity implements View.OnClickListener{ //下面的反斜杠是转义字符,为了使Json的""不和android的""冲突 String jsonData="[{\"name\":\"Tom\",\"age\":20},{\"name\":\"Jerry\",\"age\":18}]"; String jsonData2="{\"name\":\"Tom\",\"age\":20}"; Button but1,but2,but3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); but1=(Button)findViewById(R.id.but1); but1.setOnClickListener(this); but2=(Button)findViewById(R.id.but2); but2.setOnClickListener(this); but3=(Button)findViewById(R.id.but3); but3.setOnClickListener(this); } @Override public void onClick(View v) { JsonUtils jsonUtils = new JsonUtils(); if(v==but1) { jsonUtils.parseJson(jsonData); }else if(v==but2){ User user=jsonUtils.parseJson2User(jsonData2); System.out.println("Age=" + user.getAge()); System.out.println("Name="+user.getName()); }else{ LinkedList<User> users=jsonUtils.parseJson2Users(jsonData); for(Iterator iterator = users.iterator(); iterator.hasNext();){ User user=(User)iterator.next(); System.out.println("Age=" + user.getAge()); System.out.println("Name="+user.getName()); } } }}
User.java:
package fk.androiddemo_019;/** * Created by Administrator on 2016/10/6. */public class User { private String name; private int age; 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; }}
JsonUtils.java:
package fk.androiddemo_019;import android.util.JsonReader;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import java.io.StringReader;import java.lang.reflect.Type;import java.util.LinkedList;/** * Created by Administrator on 2016/10/6. *///Json解析工具public class JsonUtils { //解析一段json数据 public void parseJson(String jsonData){ try { JsonReader reader=new JsonReader(new StringReader(jsonData)); reader.beginArray();//开始解析Json数组[] while(reader.hasNext()){//数组中还有没有对象 reader.beginObject();//开始解析对象{} while(reader.hasNext()){//对象中还有没有键值对 String key=reader.nextName();//读取下一个键 if(key.equals("name")){ System.out.println("name-->"+reader.nextString());//读取对应的值 }else if(key.equals("age")){ System.out.println("age-->"+reader.nextInt());//读取对应的值 } } reader.endObject();//结束对象解析 } reader.endArray();//结束数组解析 } catch (Exception e) { System.out.println(e+"解析"); } } //把单个json数据直接解析到一个对象里去 public User parseJson2User(String jsonData) { Gson gson=new Gson(); User user=gson.fromJson(jsonData,User.class); return user; } //把json数组数据直接解析到一组对象里去 public LinkedList<User> parseJson2Users(String jsonData) { //Type是泛型,new TypeToken<LinkedList<User>>(){}是TypeToken的匿名内部子类 Type listType = new TypeToken<LinkedList<User>>(){}.getType(); Gson gson = new Gson(); LinkedList<User> users = gson.fromJson(jsonData, listType); return users; }}
运行结果截图:
1 0
- android---Json数据解析
- Android Json 数据解析
- Android解析json数据
- android解析json数据
- Android-解析json数据
- Android Json数据解析
- Android解析JSON数据
- Android解析Json数据
- Android json数据解析
- android解析json数据
- android解析JSON数据
- Android解析json数据
- android Json数据解析
- android JSON数据解析
- Android 解析 Json 数据
- Android JSON数据解析
- Android JSON数据解析
- Android json数据解析
- ServletContext,ActionContext,ServletActionContext的区别
- Dutch National Flag 问题
- Scientific Toolworks Understand for linux 的下载
- 《c++ primer》读书笔记--数组与指针
- 环状序列
- android json数据解析
- 农保和社保的区别有哪些
- java中线性表的两种实现方式区别
- EM算法
- 循环队列的主要特点及其应用
- vpn非正常退出后无法连接wifi的解决方案
- 颜色(Color)大全
- 镜像词和回文词
- javaEE------------------有关servlet的一些细节(输出流以及转发、重定向和请求包含)