json是常见的数据格式,生成和解析是常用的操作。Android中,默认提供orgJson供我们使用,除此之外,google也提供了Gson库方便我们开发。

Json样例类

package com.fxb.jsontest;

import android.content.Context;
import android.util.Log;
import android.widget.Toast;
import com.google.gson.Gson;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; public class JsonUtils { public static String createJson(){
try {
JSONObject json = new JSONObject();
json.put("key1", "value1");
json.put("key2", "value2"); JSONObject json1 = new JSONObject();
json1.put("key3", "value3");
json1.put("key4", "value4");
json.put("child1", json1); JSONObject json2 = new JSONObject();
json2.put("key5", "value5");
json2.put("key6", "value6");
json1.put("child2", json2); JSONObject json3 = new JSONObject();
json3.put("key7", "value7");
json3.put("key8", "value8");
json2.put("child2", json3); JSONArray arr = new JSONArray();
JSONObject json4 = new JSONObject();
json4.put("key9", "value9");
json4.put("key10", "value10");
arr.put(json4); JSONObject json5 = new JSONObject();
json5.put("key11", "value11");
json5.put("key12", "value12");
arr.put(json5); json3.put("child3", arr); // Log.i("JsonTest", json.toString());
return json.toString();
} catch (JSONException e) {
e.printStackTrace();
return null;
}
} public static void orgJsonTest(Context context){
String str = "{\"key1\":\"value1\",\"key2\":\"value2\",\"child1\":{\"key3\":\"value3\",\"key4\":\"value4\",\"child2\":{\"key5\":\"value5\",\"key6\":\"value6\",\"child3\":{\"key7\":\"value7\",\"key8\":\"value8\",\"child4\":[{\"key9\":\"value9\",\"key10\":\"value10\"},{\"key11\":\"value11\",\"key12\":\"value12\"}]}}}}";
try {
JSONObject jsonRoot = new JSONObject(str);
JSONObject jsonChild3 = jsonRoot.getJSONObject("child1").getJSONObject("child2").getJSONObject("child3");
if(jsonChild3 != null){
String str7 = jsonChild3.getString("key7");
String str8 = jsonChild3.getString("key8"); JSONArray jsonArr = jsonChild3.getJSONArray("child4");
JSONObject jsonChild4_1 = jsonArr.getJSONObject(0);
String str9 = jsonChild4_1.getString("key9");
String str10 = jsonChild4_1.getString("key10"); // Log.i(MainActivity.TAG, "str7:"+str7+", str8:"+str8);
// Log.i(MainActivity.TAG, "str9:"+str9+", str10:"+str10);
String strShow = "str7:"+str7+", str8:"+str8 + "\n"+"str9:"+str9+", str10:"+str10;
showToast(context, strShow);
}
else{
Log.i(MainActivity.TAG, "empty");
}
} catch (JSONException e) {
e.printStackTrace();
}
} public static void gsonTest(Context context){
Gson gson = new Gson();
int i = gson.fromJson("100", int.class);
double d = gson.fromJson("1.234", double.class);
boolean b = gson.fromJson("true", boolean.class); final String strPerson = "{\"id\":5678,\"name\":\"Jack\",\"isWell\":\"true\",\"adress\":\"beijing\"}"; Person person = gson.fromJson(strPerson, Person.class);
Toast.makeText(context, "i:" + i + "\nd:" + d + "\nb:" + b + "\nperson\n" + person.show(), Toast.LENGTH_SHORT).show(); } public static void showToast(Context context, String str){
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
} public static class Person{
private int id;
private String name;
private boolean isWell;
private String adress; public String show(){
return "id="+id+", isWell="+ isWell +", adress="+adress;
}
} }

测试Activity类

package com.fxb.jsontest;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button; public class MainActivity extends Activity implements View.OnClickListener { public static final String TAG = "JsonTest";
private Button btnCreateJson, btnOrgJson, btnGson, btnFastJson; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
} private void initView(){
btnCreateJson = (Button)findViewById(R.id.btnCreateJson);
btnOrgJson = (Button)findViewById(R.id.btnOrgJson);
btnGson = (Button)findViewById(R.id.btnGson);
btnFastJson = (Button)findViewById(R.id.btnFastJson); btnCreateJson.setOnClickListener(this);
btnOrgJson.setOnClickListener(this);
btnGson.setOnClickListener(this);
btnFastJson.setOnClickListener(this);
} @Override
public void onClick(View v) {
if(v == btnCreateJson){
String str = JsonUtils.createJson();
Log.i(TAG, str);
}
else if(v == btnOrgJson){
JsonUtils.orgJsonTest(this);
}
else if(v == btnGson){ }
else if(v == btnFastJson){ }
}
}

  样例中,成功创建了json字符串,并实现了解析。

Json的生成和解析的更多相关文章

  1. java中json数据生成和解析(复杂对象演示)

    1.json简单介绍 1.1 json是最流行和广泛通用的数据传输格式,简称JavaScript Object Notation,最早在JavaScript中使用. 1.2 举个例子,下面是一个jso ...

  2. QT json字符串生成和解析

    1         QT json字符串生成和解析 1.1  QT Json解析流程 (1)  字符串转化为QJsonDocument QJsonParseError json_error; QJso ...

  3. java json 的生成和解析 --json-lib

    类(java json的解析和生成): import java.util.HashMap; import java.util.Map; import net.sf.json.JSONArray; im ...

  4. Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  5. 【转载】Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  6. iOS开发之JSON格式数据的生成与解析

    本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据? ...

  7. fastjson生成和解析json数据,序列化和反序列化数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  8. fastjson生成和解析json数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  9. Android Json生成及解析实例

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

随机推荐

  1. VMWare上的ubuntu系统安装VMWare Tools(图文)

    一.启动vm,点击这里安装 二.将文件复制到桌面 三.在终端用命令,把文件解压到桌面 四.执行安装命令  sudo ./vmware-install.pl 五.效果图

  2. Android Dialog对话框

    Dialog的基本方法 //创建Dialog AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); //设 ...

  3. Android--底部导航栏的动态替换方案

    1.通常来说,一般情况下,我们的app的BottomTab会有集中实现方式. 自定义view,然后自己写逻辑去实现互斥. 自由度最高,因为啥都是自己写的. 使用RadioGroup+RadioButt ...

  4. git 入门教程之实战 git

    实战 git git 是一款分布式版本控制系统,可以简单概括: 不要把鸡蛋放在一个篮子里,你的一举一动都在监视中. 实战场景 你作为某项目的其中一员或者负责人,和小伙伴们一起开发,大家既有着各自分工互 ...

  5. 数据库之mysql篇(6)—— mysql常用函数函数/自定义函数

    常用函数 运算函数 我相信你都能看懂,所以以上的不再做过多解释 然后还有个,前面漏掉的between and: 意指10是否在0到20之间,如果是返回1,否则返回0 日期函数 这个要稍微注意一下参数, ...

  6. Android WebSocket开发

    一,在模块build.gradle中添加webSocket的依赖包 //WebSocket 依赖包 implementation 'com.neovisionaries:nv-websocket-cl ...

  7. 使用concurrent.futures模块中的线程池与进程池

    使用concurrent.futures模块中的线程池与进程池 线程池与进程池 以线程池举例,系统使用多线程方式运行时,会产生大量的线程创建与销毁,创建与销毁必定会带来一定的消耗,甚至导致系统资源的崩 ...

  8. [Hive_5] Hive 的 JDBC 编程

    0. 说明 Hive 的 JDBC 编程 1. hiveserver2 介绍 hiveserver2 是 Hive 的 JDBC 接口,用户可以连接此端口来连接 Hive 服务器 JDBC 驱动类为 ...

  9. LeetCode算法题-Balanced Binary Tree(Java实现)

    这是悦乐书的第167次更新,第169篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第26题(顺位题号是110).给定二叉树,判断它是否是高度平衡的.对于此问题,高度平衡二 ...

  10. 【算法】LeetCode算法题-Reverse Integer

    这是悦乐书的第143次更新,第145篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第2题(顺位题号是7),给定32位有符号整数,然后将其反转输出.例如: 输入: 123 ...