Json的生成和解析

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字符串,并实现了解析。

时间: 2024-08-11 15:48:09

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

Android配置文件分享和JSON数据生成与解析

首先声明,我这里大体是讲的一个关于"Android配置文件分享和JSON数据生成与解析"的整体流程,具体数据库中的数据根据读者自己的项目来安排,如果您看不大懂也请您原谅,毕竟我说了,我只是新手.其实关于数据库中的数据你只需要知道他们都是一个个对象,然后有各自的属性就行了,我们的关键在于JSON数据的生成与解析. 鉴于自己的是个博客新手,感觉自己的博客访问量有些少可能是因为自己确实知识匮乏,毕竟我早就说了,我不适合编程,但是没办法啊,我要去读个文学博士的话,怕是要遭人白眼了,故而以后的事

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

类(java json的解析和生成): import java.util.HashMap; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JsonTest { public String jsonToString(){ JSONObject users = new JSONObject(); JSONArray array = new JSONArra

Qt之JSON生成与解析

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. 常用的Json库 JsonCp

JSON数据的生成与解析

JSON数据的生成与解析,首先先到网上下载一个json jar包,我用的是org.json 示例代码: package json; import org.json.JSONArray; import org.json.JSONObject; public class Main { /** * 生成Json数据 */ public static String createJson(){ JSONObject json = new JSONObject(); json.put("classId&qu

android下基本json串的生成与解析

以前就用过json串,不过是在java环境下面,如今转移到android环境下,java里面生成解析json串的jar包与android中自带的冲突,所以也只能用安卓自带的. 先前查网上的资料,感觉很多都说的很乱,直接给出了例子,也不解释一下就算完成,他们自己肯定是明白的,但是让读者理解起来肯定有点难度.而且解析的方法很多,而这里,我就介绍一种最原始最简单的吧.希望我拙劣的表达能力不会影响到你们的理解. 首先我们先讲一下json串格式 比如对象pet(宠物) class pet{ int pet

JS中生成与解析JSON

js中生成json对象 js中解析json字符串: 1.eval("..."): var a_id=eval('{"name":123}'); 如果eval中的内容含有恶意脚本就麻烦了 2.json_parse: 需要导入json_parse.js: <script src="js/json_parse.js"></script>    <script language="javascript"&

使用JSONObject生成和解析json

使用JSONObject生成和解析json 1. json数据类型 类型 描述 Number 数字型 String 字符串型 Boolean 布尔型 Array 数组 Object 对象 null 空值 (1)json中不区分整数.小数等类型,而统一使用Number来存储数字. (2)Array表示数组,以中括号"[]"括起来,元素之间以逗号分隔,元素可以为任意类型. (3)Object表示对象,类似于C语言中的结构体,以花括号"{}"括起来,其元素要求为键值对,k

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

本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>) 2.通过一个android程序测试fastjson的用法. fastjson简介: Fastjson是一个Java语言编写的高性能功能完善的JSON库.fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jack

FastJson生成和解析JSON数据

生成和解析JSON数据格式的包有很多种:Gson.json-smart.FastJson.jackjson等,FastJson是一个阿里巴巴的大神开发的开源的Json处理工具包,包括"序列化"和"反序列化"两部分,号称最快.但是我认为没有最快,只有更快,只要这个功能满足我的需求,速度不错就行了,这就是我选择工具的基本标准(不是特别追求性能...). FastJson功能强大,完全支持Java Bean.集合.Map.日期.Enum,支持范型,支持自省:无依赖,能够直