使用gson-1.6.jar解析json

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

}
时间: 2024-11-06 13:17:22

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

Android以JSONOject和GSON两种方式解析json

json文件如下: 将获取到的json数据转化为String形式 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://10.0.2.2/get_data.json") .build(); Response response =client.newCall(request).execute(); String responseData = respon

Android原生方式解析Json,Gson三方框架方式解析Json

package com.example.administrator.test.Fragment.Login; import android.support.v4.media.VolumeProviderCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import c

关于使用jackson.jar解析JSON时,大写JSON key值发生报错的问题

最近在项目中调用.NET的服务时,Jackson在解析返回的json字符串时始终报错,纠结很久之后才找到原因,原来是是由于json字符串中的字母都是首字母大写,导致jackson找不到相应的KEY. 解决方法有两种: 直接将bean对象中的属性改为public,属性名命名为首字母大写,比如{"Name":"nomouse","Age":12},定义相应的bean为: public class User { public String Name;

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

现在有时候之前的项目需要返回来修改bug看到以下这段代码 1 if (test != null) { 2 JSONTokener jsonParser = new JSONTokener(test); 3 JSONObject data_jo = (JSONObject) jsonParser.nextValue(); 4 String data_str = data_jo.getString("dateMap"); 5 6 if(!data_str.equals("&quo

Java中构造和解析JSON

什么是 Json? JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式.  易于人阅读和编写.同时也易于机器解析和生成.它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集.  JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括C, C++, C#

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

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组

使用Gson解析Json

1.Json介绍 JSON的全称是"JavaScript Object Notation",即JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交换格式.两者的区别:因为XML虽然可以作为跨平台的数据交换格式,但是在JS中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们倾向于选择JSON来交换数据. 2.Json的两种结构 JSON有两种表示结构,对象和数

用GSON解析Json格式数据

GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的libs目录下添加这个文件即可:如果是在Java项目中,则把gson-2.2.4.jar先添加到当前项目的任意一个包中,然后右键点击这个jar包 -> 构建路径 -> 添加至构建路径.这样准备工作就做好了. (一)单条无嵌套Json数据的解析 比如有如下Json数据:{"name"

通过Gson解析Json数据

Json是一种数据格式,便于数据传输.存储.交换:Gson是一种组件库,可以把java对象数据转换成json数据格式. gson.jar的下载地址:http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22gson%22 一.Json数据样式 为了便于理解我们先来看看Json的数据样式: 1. 单个数据对象 { "id": 100, "body": "It is my post", "numbe