package com.example.mars_2900_json01;

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 static void parseJson(String jsonData) {
try {
// 如果需要解析JSON数据,首要要生成一个JsonReader对象
//"[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]"
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();//开始解析数组
while (reader.hasNext()) {
reader.beginObject();//开始解析对象
while (reader.hasNext()) {
String tagName = reader.nextName();
if (tagName.equals("name")) {
System.out.println("name--->" + reader.nextString());
} else if (tagName.equals("age")) {
System.out.println("age--->" + reader.nextInt());
}
}
reader.endObject();
}
reader.endArray();
} catch (Exception e) {
e.printStackTrace();
}
} public static void parseUserFromJson(String jsonData){
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.println("name--->" + user.getName());
System.out.println("age---->" + user.getAge());
} public static void parseUserListFromJson(String jsonData){
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());
}
}
}
package com.example.mars_2900_json01;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.os.Build; public class MainActivity extends ActionBarActivity {
private String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
private String jsonData2 = "{\"name\":\"json\",\"age\":21}";
private Button button; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.buttonId);
button.setOnClickListener(new ButtonListener());
} private class ButtonListener implements OnClickListener { @Override
public void onClick(View v) {
JsonUtils.parseJson(jsonData);
JsonUtils.parseUserFromJson(jsonData2);
JsonUtils.parseUserListFromJson(jsonData); } } @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;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
} /**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() {
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
return rootView;
}
} }

使用gson-1.6.jar解析json的更多相关文章

  1. 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址

    在线聊天项目结构图: 多用户登陆效果图: 多用户聊天效果图: 数据库效果图: 重新构建了Server类,使用了Gson方法,通过解析Json字符串,增加Info类,简化判断过程. Server类代码如 ...

  2. Gson+GsonFormat+Postman简单粗暴解析json

    现在有时候之前的项目需要返回来修改bug看到以下这段代码 if (test != null) { JSONTokener jsonParser = new JSONTokener(test); JSO ...

  3. fastjson生成和解析json数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  4. 使用Gson解析json

    前边的博客说过将json解析成java的方法,使用的是 这几个jar包,但是在解析时层遇到一个问题,就是在将时间字符串转换为java的Timestamp对象时会抛出异常,这个问题一直放在哪里没有去解决 ...

  5. Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下   Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...

  6. 用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

  7. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. Android 利用Gson生成或解析json

    目前手机端和服务端数据交流格式一般是json,而谷歌提供了Gson来解析json.下载Gson:https://code.google.com/p/google-gson/ 下载的放在lib并导入,若 ...

  9. 解析Json的谷歌官方方法Gson和阿里巴巴的fastJson方法。

    //测试单个json文本 public void testGsonTwo(){ String jsonStr = "{\"id\":100,\"name\&qu ...

随机推荐

  1. BEA-WEBLOGIC ---http://www.beansoft.biz/weblogic/docs92/index.html

    WebLogic Home      英文对照      发行信息 站点地图 Installation Guide 新增功能 已知和已解决的问题 Upgrade Guide Installing Ma ...

  2. syslog syslog-ng rsyslog flume scribe 各种尝试

    1. syslog概念 syslog本身是一种协议, 一个用来描述系统日志格式的协议, 当前的协议包括三部分: 如下面是一个syslog消息: <30>Oct 9 22:33:20 hlf ...

  3. docker 镜像的保存以及导入

    docker 镜像的保存 docker save -o  davename.tar  images docker 镜像的导入 docker  import -  importname < tar ...

  4. ASP.NET MVC 页面调整并传递参数

    转自:http://blog.csdn.net/zhensoft163/article/details/7174661 使用过ASP.NET MVC的人都知道在MVC中页面后台中常用的页面跳转方法有几 ...

  5. linux中常用目录的作用

    /bin 存放使用者最长用的命令,如:cp.ls.cat,等等. /boot 启动linux时使用的一些核心文件.  /dev 是device(设备)的缩写,这个目录下是所有linux的外围设备. D ...

  6. SQLSERVER 605 尝试在数据库 %d 中提取逻辑页 %S_PGID 失败。 该逻辑页属于分配单元 %I64d,而非 %I64d。

    今天在开发过程中写了一个存储过程发现执行的时候,时不时会提示605错误,重新执行又可能会成功. 百度了一下,很多说法是硬件的IO问题,就是存储器反馈给SQL SERVER 写入成功,但下次读取的时候S ...

  7. ORA-27086: unable to lock file - already in use

    问题现象: SQL> startup ORACLE instance started. Total System Global Area 1854021632 bytes Fixed Size  ...

  8. oracle自动备份

    因为一个项目上马,需要设置自动备份,网上搜索了一下,windows平台下基本上是通过系统的任务计划完成的,于是我也写了一下,无非就是exp xxxx.dmp,文件名是用的日期加时间,精确到秒,一小时备 ...

  9. 深入理解ThreadLocal

    ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地 ...

  10. UI-动画

    // ------------------UIImageView的动画------------------ // ------------------UIView的动画---------------- ...