zoukankan      html  css  js  c++  java
  • android实现json数据的解析和把数据转换成json格式的字符串

    利用android sdk里面的

    JSONObject和JSONArray把集合或者普通数据,转换成json格式的字符串

    JSONObject和JSONArray解析json格式的字符串为集合或者一般数据

    package com.hck.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity implements OnClickListener {
        private Button button1, button2, button3, button4;  //4个按钮
        private TextView textView;  //显示处理结果的textview
        private List<UserBean> userBeans; //保存数据的集合
        private JSONObject object;  //JSONObject对象,处理一个一个的对象
        private JSONObject object2;
        private JSONArray jsonArray;//JSONObject对象,处理一个一个集合或者数组
        private String jsonString;  //保存带集合的json字符串
        private String jsonString2;//不带集合的json字符串
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            initView(); //初始化控件
            initDate(); //初始化数据
            setListener(); //绑定监事件
            
    
        }
    
        private void initView() {
            button1 = (Button) findViewById(R.id.bt1);
            button2 = (Button) findViewById(R.id.bt2);
            button3 = (Button) findViewById(R.id.bt3);
            button4 = (Button) findViewById(R.id.bt4);
            textView = (TextView) findViewById(R.id.text);
        }
    /**
     * 初始化2个用户对象
     */
        private void initDate() {
            
            userBeans = new ArrayList<UserBean>();
            UserBean userBean = new UserBean();
            userBean.setUserId(1);
            userBean.setUserName("hck");
            userBeans.add(userBean);
    
            UserBean userBean2 = new UserBean();
            userBean2.setUserId(2);
            userBean2.setUserName("蝌蚪");
            userBeans.add(userBean2);
    
        }
    
        private void setListener() {
            button1.setOnClickListener(this);
            button2.setOnClickListener(this);
            button3.setOnClickListener(this);
            button4.setOnClickListener(this);
        }
    
        private void changeArrayDateToJson() {  //把一个集合转换成json格式的字符串
            jsonArray=null;
            object=null;
            jsonArray = new JSONArray();
            object=new JSONObject();
            for (int i = 0; i < userBeans.size(); i++) {  //遍历上面初始化的集合数据,把数据加入JSONObject里面
                object2 = new JSONObject();//一个user对象,使用一个JSONObject对象来装
                try {
                    object2.put("userId", userBeans.get(i).getUserId());  //从集合取出数据,放入JSONObject里面 JSONObject对象和map差不多用法,以键和值形式存储数据
                    object2.put("userName", userBeans.get(i).getUserName());
                    jsonArray.put(object2); //把JSONObject对象装入jsonArray数组里面
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            
            try {
                object.put("userDate", jsonArray); //再把JSONArray数据加入JSONObject对象里面(数组也是对象)
                //object.put("time", "2013-11-14"); //这里还可以加入数据,这样json型字符串,就既有集合,又有普通数据
            } catch (JSONException e) {
                e.printStackTrace();
            }
            jsonString=null;
            jsonString = object.toString(); //把JSONObject转换成json格式的字符串
            textView.setText(jsonString);
            Log.i("hck", "转换成json字符串: " + jsonString);
    
        }
        private void changeNotArrayDateToJson() {
            object=null;
            object=new JSONObject();
            try {
                object.put("userId", "1"); //把数据加入JSONObject对象即可,"userid"相当于map里面的key,1即为value的值。
                object.put("userName", "hck");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            jsonString2=null;
            jsonString2 = object.toString();//把JSONObject转换成json格式的字符串
            Log.i("hck", "转换成json字符串: " + jsonString2);
            textView.setText(jsonString2);
        }
        
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.bt1:
                changeNotArrayDateToJson(); //点击第一个按钮,把集合转换成json数据格式的string
                break;
    
            case R.id.bt2:
                changeArrayDateToJson(); //点击第2个按钮,把普通数据换成json数据格式的string
                break;
            case R.id.bt3:  //解析不带集合的json字符串
                 if (jsonString2==null || "".equals(jsonString2)) {
                        Toast.makeText(MainActivity.this, "请先点击上面第1个按钮转把数据换成json字符串", Toast.LENGTH_LONG).show();
                        return;
                    }
                    changeJsonToData2();
                break;
            case R.id.bt4://解析带集合的json字符串
                 if (jsonString==null || "".equals(jsonString)) {
                        Toast.makeText(MainActivity.this, "请先点击第2按钮把数据换成json字符串", Toast.LENGTH_LONG).show();
                        return;
                    }
                    changeJsonToData1();
                
                break;
            default:
                break;
            }
    
        }
        private void changeJsonToData1()
        {
            StringBuilder stringBuilder=new StringBuilder(); //用来保存解析出来的额数据,显示在textview
            UserBean userBean;
            List<UserBean> bList=new ArrayList<UserBean>();
            try {
                object=new JSONObject(jsonString); //用json格式的字符串获取一个JSONObject对象
                jsonArray=object.getJSONArray("userDate");  //通过key,获取JSONObject里面的一个JSONArray数组
                for (int i = 0; i < jsonArray.length(); i++) {  //遍历数据
                    object=jsonArray.getJSONObject(i); //从JSONArray里面获取一个JSONObject对象
                    userBean=new UserBean();
                    userBean.setUserId(object.getInt("userId")); //通过key,获取里面的数据
                    userBean.setUserName(object.getString("userName"));
                    bList.add(userBean);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            for (int i = 0; i < bList.size(); i++) {
                stringBuilder.append("用户id:"+bList.get(i).getUserId()).append("   ").append("用户名字:"+bList.get(i).getUserName());
            }
            textView.setText(stringBuilder.toString().replace("null", ""));
        }
        private void changeJsonToData2()
        {
            try {
                object=new JSONObject(jsonString2);
                String userName=object.getString("userName");
                String userIdString=object.getString("userId");
                textView.setText("用户id"+userIdString+"用户名字:"+userName);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    js全局变量
    $.getJSON异步请求和同步请求
    让js中的函数只有一次有效调用
    两个div并排显示,当浏览器界面缩小时会出现换行
    jquery获取窗口和文档的高度和宽度
    后台传带引号(")的数据需要注意
    C# dynamic
    (转)数据库函数解析JSON字符串
    Unicode和UTF-8
    用户通过浏览器修改表单隐藏域
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5673957.html
Copyright © 2011-2022 走看看