利用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();
userBean.setUserName("hck");
userBeans.add(userBean); UserBean userBean2 = new UserBean();
userBean2.setUserId();
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 = ; 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", ""); //把数据加入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 = ; 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 = ; 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();
}
}
}

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

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

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  2. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  3. Android 之 json数据的解析(jsonReader)

    json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...

  4. HttpURLConnection从网上获取Json数据并解析详解

    HttpURLConnection从网上获取Json数据并解析 1.HttpURLConnection请求数据的步骤 (1)构造一个URL接口地址: URL url = new URL("h ...

  5. android基础---->XMl数据的解析

    在网络上传输数据时最常用的格式有两种,XML和JSON,下面首先学一下如何解析XML格式的数据,JSON的解析可以参见我的博客(android基础---->JSON数据的解析).解析XML 格式 ...

  6. javascript中 json数据的解析与序列化

    首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...

  7. django-将数据库数据转换成JSON格式(ORM和SQL两种情况)

    最近打算搞一个自动化运维平台,所以在看Django的知识. 在实际项目开发中,遇到一个小问题:前后端发生数据交互主流采用的是JSON.前端传数据到服务器端比较简单,稍微麻烦的是服务器端传JSON到前端 ...

  8. SpringMVC系列(十一)把后台返回的数据转换成json、文件下载、文件上传

    一.后台返回的数据转换成json 1.引入转换json需要的3个依赖 <!--json转换需要的依赖 begin --> <dependency> <groupId> ...

  9. [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)

    点击下载 ConvertJson.rar 本类实现了 C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json|等功能大家先预 ...

随机推荐

  1. Android 开发之自定义Dialog及UI的实现

    我们在开发中,经常会自定义Dialog,因为原生的AlertDialog无法满足我们的需求,这个时候就需要自定义Dialog,那么如何自定义呢,其实不难,就是有点繁琐而已.也就是自定义一个UI的xml ...

  2. MFC/VC++ UI界面美化技术

    1.     工具: 1.1设备环境类: Windows下的绘图操作说到底就是DC操作.DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它. ...

  3. h5宣传页制作过程中遇到的问题

    音乐播放 ios下关闭不流畅; (ios下需重新image 模拟) 音乐设置自动播放属性后 部分机型下不能自动播放.目前解决方案: touchstart时触发播放 微信“分享给朋友”点击发送后,页面卡 ...

  4. System Operations on AWS - Lab 5W - Managing Resources (Windows)

    登陆到CommandHost实例,通过AWS CLI来管理各个资源 1. 通过Tags来管理资源 1.1 登陆到CommandHost实例 1.2 找出development实例 1.2.1 打开Po ...

  5. Linux服务器常用性能监控命令汇总

    1.ifconfig 网卡数目.ip地址.Mac地址.MTU大小 eth0 Link encap:Ethernet HWaddr 00:0d:3a:50:12:e9 inet addr:10.0.0. ...

  6. like的性能问题

    使用like'%匹配的文字%',无法优化,因为索引起不到作用. 不过like'匹配的文字%',索引起作用.

  7. 还原或删除sql server 2008数据库时,经常烩出现: “因为数据库正在使用,所以无法获得对数据库的独占访问权”,终解决方案

    还原或删除sql server 2008数据库时,经常烩出现: “因为数据库正在使用,所以无法获得对数据库的独占访问权”,终解决方案如下 关键SQL语句: ALTER DATABASE [dateba ...

  8. Bootstrap 样式定制-lessc编译源码

    1.github上下载源码:解压:如目录bootstrap 2.新建同级目录custom-bootstrap ,在该目录下新建 如下三个文件:其实就是bootstrap下面的bootstrap.les ...

  9. 关于 复制文本 然后Ctrl+V 操作的这个功能 貌似jq也没有封装。。。

    /* * copy */ function copy(){ var maintext=$("#myhtml").val(); alert(maintext); copyToClip ...

  10. Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException

    异常Log: Error:Execution failed for task ‘:app:dexDebug’. > com.android.ide.common.process.ProcessE ...