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|等功能大家先预 ...
随机推荐
- 随便说说removeFromSuperview方法
之前写过一篇关于removeFromSuperview方法处理的文章,写完后一直就没怎么更新这篇文章.这两天回过头来看看,感觉这篇文章有些地方写的不够严谨,而且还有一些自己理解错的地方,所以打算重写这 ...
- oracle授权另外一个用户访问自己创建的数据对象
oracle安装好之后,有一个默认的scott用户,该用户有一个默认的emp表,怎样让新创建的用户也能够访问这个表呢? 授权xiaoming这个用户访问emp表,但是xiaoming只有select权 ...
- IIS Shared Configuration
Introduction The Internet changes the ways in which companies handle their day-to-day business and h ...
- C#语法糖之第四篇: 扩展方法
今天继续分享C#4.0语法糖的扩展方法,这个方法也是我本人比较喜欢的方法.大家先想想比如我们以前写的原始类型不能满足现在的需求,而需要在该类型中添加新的方法来实现时大家会怎么做.我先说一下我没有学习到 ...
- [字符串] AppMessage--字符串返回帮助类 (转载)
点击下载 AppMessage.rar 这个类是关于AppMessage的帮助类,主要是格式化返回字符串的里面会有很多的提供字符的格式以及预设置内容,大家可以直接使用的看下面代码吧 /// <s ...
- 多线程与Socket编程
一.死锁 定义: 指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁 ...
- 基于shiro授权过程
1.对subject进行授权,调用方法isPermitted("permission串")2.SecurityManager执行授权,通过ModularRealmAuthorize ...
- GCDTimer
#import <Foundation/Foundation.h> @interface JKTimerManager : NSObject + (instancetype)sharedT ...
- UIKit Animation
UIKit Animation 1.属性动画 - (void)changeFrameAnimation { [UIView beginAnimations:@"frameAnimation& ...
- java封装和多态
封装.集成.多态和抽象是java的基本特征. 封装的第一步就是对类进行组装,即定义一个类,这时候要考虑这个类要有哪些属性.方法等.第二步就是信息的隐藏,这包括访问修饰符.get/set方法和某些特定方 ...