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();
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格式的字符串的更多相关文章
- iOS开发网络篇—JSON数据的解析
iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- Android 之 json数据的解析(jsonReader)
json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...
- HttpURLConnection从网上获取Json数据并解析详解
HttpURLConnection从网上获取Json数据并解析 1.HttpURLConnection请求数据的步骤 (1)构造一个URL接口地址: URL url = new URL("h ...
- android基础---->XMl数据的解析
在网络上传输数据时最常用的格式有两种,XML和JSON,下面首先学一下如何解析XML格式的数据,JSON的解析可以参见我的博客(android基础---->JSON数据的解析).解析XML 格式 ...
- javascript中 json数据的解析与序列化
首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...
- django-将数据库数据转换成JSON格式(ORM和SQL两种情况)
最近打算搞一个自动化运维平台,所以在看Django的知识. 在实际项目开发中,遇到一个小问题:前后端发生数据交互主流采用的是JSON.前端传数据到服务器端比较简单,稍微麻烦的是服务器端传JSON到前端 ...
- SpringMVC系列(十一)把后台返回的数据转换成json、文件下载、文件上传
一.后台返回的数据转换成json 1.引入转换json需要的3个依赖 <!--json转换需要的依赖 begin --> <dependency> <groupId> ...
- [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)
点击下载 ConvertJson.rar 本类实现了 C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json|等功能大家先预 ...
随机推荐
- 史上最全的iOS各种设备信息获取总结
来源:si1ence 链接:http://www.jianshu.com/p/b23016bb97af 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息 ...
- 随便说说removeFromSuperview方法
之前写过一篇关于removeFromSuperview方法处理的文章,写完后一直就没怎么更新这篇文章.这两天回过头来看看,感觉这篇文章有些地方写的不够严谨,而且还有一些自己理解错的地方,所以打算重写这 ...
- python实时处理log文件脚本
这个Python脚本是用来对实时文件的内容监控,比如 Error 或者 time out 字段都可以进行自定义:算是我的第一个真正的Python脚本,自己感觉还是比较臃肿,不过打算放到blog上记录一 ...
- 用php切割大图片为成规则的小图
将根据xml配置,将合并后的大图切割成一系列小图 <?php /** * 将大图片按照配置切割成一定比例的小图片 * 并按照一定规则给小图片命名 * * 使用方法: *根据guardians/g ...
- 常用js代码学习
1.用JS实现的radio图片选择按钮效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- 爆牙齿的 Web 标准面试题 【转藏】
<!DOCTYPE html> <html lang="zh-CN"><head> <meta http-equiv="cont ...
- Eclipse - 安装 run-jetty-run 插件及使用 jrebel 热部署
安装 run-jetty-run 插件 1. 下载 run-jetty-run 2. 解压至 Eclipse/MyEclipse 安装目录下的 plugin 3. 右键 web 项工程,选择 Run ...
- Mvc-项目遇到问题解决办法
项目中验证 在@using (Html.BeginForm()) 后边都有 @Html.ValidationSummary(), @Html.ValidationSummary(true, " ...
- ios专题 - CocoaPods - 初次体验
[原创]http://www.cnblogs.com/luoguoqiang1985 这CocoaPods怎么用呢? 参考官方文章:guides.cocoapods.org/using/using-c ...
- java中 引用类型 和 基本类型 有何区别?
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newa ...