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();
        }
    }
}
时间: 2024-10-24 12:15:50

android实现json数据的解析和把数据转换成json格式的字符串的相关文章

iOS开发网络篇—JSON数据的解析

iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim

Java基本数据转换成Json代码

JSON是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.是移动开发中数据客户端和服务器端数据交互的不二选择; 尤其是现在HTML5的流行,更显着使用Json 完成数据交互的重要性. 在这里, 我将演示一下Java基本数据转换为Json代码 Json必需包 json-lib-2.3-jdk15.jar commons-lang-2.4.jar commons-logging-1.0.4.jar ezmorph-1.0.6.jar commons-collections

android通过httpClient请求获取JSON数据并且解析

android通过httpClient请求获取JSON数据并且解析:http://www.cnblogs.com/gzggyy/archive/2013/05/08/3066288.html Android--使用Http向服务器发送请求并取得返回结果,下载图片:http://www.2cto.com/kf/201307/229489.html Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据):http://blog.csdn.net/he

android中对json数据的解析,并在listview中实际运用

android中对json数据的解析,并在listview中现实,下面是数据{"ziparea": "410100.0", "enddate": "2015-04-03 00:00:00", "ecertarea": "\u9053\u8def\u8d27\u7269\u8fd0\u8f93\u9a7e\u9a76\u5458", "ecertstate": &quo

Android 之 json数据的解析(jsonReader)

json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无序的“名称/值”对的集合.和其他的数据存储方式相比,json数据的可读性,可扩展性,编码难度,解码难度都有一定的优势.在json数据中, 对于一个对象: (1)一个对象以“{”(左括号)开始,“}”(右括号)结束. (2)每个“名称”后跟一个“:”(冒号): (3)“‘名称/值’ 对”之间使用“,”

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的

swift http请求返回json数据并解析

1 AppDelegate.swift // // AppDelegate.swift // QQDemo // // Created by 赵超 on 14-6-21. // Copyright (c) 2014年 赵超. All rights reserved. // import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? fun

C#将datatable数据转换成JSON数据的方法

json数据类型格式:[{id:"1",code:"1",description:"博士"},{id:"2",code:"2",description:"硕士"},{id:"3",code:"3",description:"学士"}] //参考代码public string DataTableToJson(string json

Json数据序列化对象,及对象序列化为Json格式

public class JsonHelper { /// <summary> /// 生成Json格式 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static string GetJso