zoukankan      html  css  js  c++  java
  • 使用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;
            }
        }
    
    }
  • 相关阅读:
    leetcode 673. 最长递增子序列的个数 java
    leetcode 148. 排序链表 java
    leetcode 98. 验证二叉搜索树 java
    leetcode 29. 两数相除 java
    leetcode 234. 回文链表 java
    Valid Palindrome LeetCode Java
    Single Number II LeetCode Java
    Single Number LeetCode java
    Search in Rotated Sorted Array II LeetCode Java
    Search in Rotated Sorted Array leetcode java
  • 原文地址:https://www.cnblogs.com/zhuawang/p/3684210.html
Copyright © 2011-2022 走看看