Android基础之Json简单解析

Android基础之Json简单解析

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。和后台通信的时候经常使用JSON来进行数据的交换。

一、JSON语法
JSON使用键值对(KEY/VALUE)的形式来对数据进行存储的,每个数据之间用逗号( , )分隔,数组用方括号[] 保存,对象用花括号{}进行保存

    /**
     * json格式
     * {
     *  "array": [1,2,3],//数组
     *  "boolean": true,//布尔值
     *  "null": null,//空值
     *  "number": 123,//数值
     *  "object": {
     *      //对象
     *      "a": "b",
     *      "c": "d",
     *      "e": "f"
     *  },
     *  "string": "Hello World"//字符串
     * }
     */

二、JSON解析
在安卓当中,对JSON的解析主要依赖JSONObject 和JSONArray 两个类。
顾名思义,JSONObject表示是一个JSON对象,JSONArray表示的是JSON数组。当调用他们的toString()方法的时候,就可以得到这个JSON对象(数组)的标准字符串(所包含的内容)
前面提到JSON储存数据是用键值对的形式,那么在JSONObject和JSONArray中也有提供了和Map相似的put和get方法。

        JSONObject jsonObject = new JSONObject(jsonString);
        jsonObject.get("key");//获得对象
        jsonObject.getDouble("key");
        jsonObject.getLong("key");
        jsonObject.getBoolean("key");
        jsonObject.getInt("key");
        jsonObject.getJSONArray("key");//获得JSON数组
        jsonObject.getJSONObject("key");//获得JSON对象
        jsonObject.getString("key");

        //第二个参数可以是int,long,double,boolean,object
        jsonObject.put("key",value);

        JSONArray jsonArray = new JSONArray(jsonString);
        jsonArray.put(index,value);
        jsonArray.put(value);

接下来用上面提到获取JSON数据的方法来进行简单的JSON解析
下面是android的简单demo

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {

    /**
     * json格式
     * {
     * "array": [1,2,3],
     * "boolean": true,
     * "null": null,
     * "number": 123,
     * "object": {
     * "a": "b",
     * "c": "d",
     * "e": "f"
     * },
     * "string": "Hello World"
     * }
     */

    TextView textView;

    private String jsonString =
            "{" +
                    "\"uid\": 10000000, " +
                    "\"name\": \"张三\"," +
                    "\"friends\":[\"李四\",\"王五\"]," +
                    "\"address\": \"QuantaCenter\", " +
                    " \"age\": 18," +
                    " \"tasks\": { \"content\": \"Quanta杯\", \"finished\": false,\"members\": [{\"uid\": 111.1, \"username\": \"赵六\"}, {\"uid\": 121.1, \"username\":\"孙七\"}]}" +
            "}";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.text);
        Button btn = (Button) findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                parseJSON();
            }
        });
    }

    private void parseJSON() {
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            long uid = jsonObject.getLong("uid");
            String name = jsonObject.getString("name");
            JSONArray friends = jsonObject.getJSONArray("friends");
            String friend1 = (String) friends.get(0);
            String friend2 = (String) friends.get(1);
            String address = jsonObject.getString("address");
            int age = jsonObject.getInt("age");
            JSONObject tasks = jsonObject.getJSONObject("tasks");
            String task = parseMultiJSON(tasks);
            String jsonParsed = "uid:" + uid + "\nname" + name + "\nfriend1:" + friend1 + "  friend2:" + friend2
                    + "\naddress:" + address + "\nage" + age + "\ntask:" + task;
            textView.setText(jsonParsed);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    private String parseMultiJSON(JSONObject jsonObject) throws JSONException {
        String buffer = "";
        String content = jsonObject.getString("content");
        boolean finished = jsonObject.getBoolean("finished");
        buffer += "\ncontent:"+content+"  finished:"+finished;
        JSONArray members = jsonObject.getJSONArray("members");
        for (int i = 0; i < members.length(); i++) {
            JSONObject object = (JSONObject) members.get(i);
            double uid = object.getDouble("uid");
            String username = object.getString("username");
            buffer += "\nuid:"+uid+"  username:"+username;
        }

        return buffer;
    }

}

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hello world"/>
    <Button
        android:text="get"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button"/>
</LinearLayout>

三、生成JSON字符串
主要利用JSONObject的put()和toString()方法,使用put()方法插入数据,使用toString()方法来生成标准的JSON字符串

//生成如下的JSON字符串
//"{
//    "uid": 10000000, 
//    "name": "张三",
//    "friends":["李四","王五"],
// }"
JSONObject jsonObject = new JSONObject();
        jsonObject.put("uid",100);
        jsonObject.put("name", "张三");

        JSONArray friends = new JSONArray();
        friends.put("李四");
        friends.put("王五");

        jsonObject.put("friends", friends);
        String json = jsonObject.toString();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值