android json解析

JSON:JavaScript 对象表示方法(JavaScript Object Notation)。

JSON是存储和交换文本信息的语法。

JSON是轻量级的文本数据交换格式

JSON独立于语言和平台

JSON具有自我描述性,更易理解


JSON与XML:   类似XML,比XML更小、更快、更易解析。

* 没有结束标签

* 更短

* 读写速度更快

* 使用数组

* 不使用保留字


JSON语法是JavaScript对象表示法语法的子集。

* 数据在名称/值对中

* 数据有逗号分隔

* 花括号保存对象

* 方括号保存数组

JSON值可以是:

* 数字(整数或浮点数)

* 字符串(在双引号中)

* 逻辑值(true或false)

* 数组(在方括号中)

* 对象(在方括号中)

* null

JSON对象:

JSON对象在花括号中书写,对象可以包含多个名称/值对

{ "firstName" : "John" , "lastName" : "Doe"  }

JSON数组:

JSON数组在方括号中书写,数组可包含多个对象:

{

    "employees" : [

{ "firstName" : "John" , "lastName" : "Doe"  }

{ "firstName" : "Anna" , "lastName" : "Smith"  }

{ "firstName" : "Peter" , "lastName" : "Jones"  }

     ]

}



从assets包中解析test.json文件:

test.json:

{
    "languages": [
        {
            "Id": "1",
            "Name":"温衡",
            "Age":21,
            "Liked": false
        },

        {
            "Id": "2",
            "Name":"思莞",
            "Age":23,
            "Liked": false
        },
        {
            "Id": "3",
            "Name":"言希",
            "Age":23,
            "Liked": true
        }
    ],

    "cat":"it"
}


解析并打印到后台的代码:

try {
    InputStreamReader isr = new InputStreamReader(getAssets().open("test.json"), "utf-8");
    BufferedReader br = new BufferedReader(isr);
    String line;
    StringBuilder builder = new StringBuilder();

    while ((line = br.readLine()) != null){
        builder.append(line);
    }
    //文件读取完后关闭BufferReaderInputStreamReader
    br.close();
    isr.close();

    JSONObject root = new JSONObject(builder.toString());  // 可以直接传入一个带有JSON数据的字符串
    //读取键值对
    Log.i("Cat", "cat = " + root.getString("cat"));

    //读取数组
    JSONArray array = root.getJSONArray("languages");
    //将数组循环输出
    for (int i = 0; i<array.length(); i++){
        //数组中每个元素都是一个JSON对象
        JSONObject lan = array.getJSONObject(i);
        Log.i("id", "id = " + lan.getString("Id") + "************************");
        Log.i("name", "name = " + lan.getString("Name") + "****************************");
        Log.i("age", "age = " + lan.getString("Age") + "****************************");
        Log.i("liked", "liked = " + lan.getBoolean("Liked") + "****************************");

        Log.i("fen", "------------------------------------------------------------------");
    }


} catch (Exception e) {
    e.printStackTrace();
}



在android中创建JSON数据:


//创建新的JSON数据
try {

    //1.创建JSON类:
    JSONObject root = new JSONObject();
    //2.创建"cat":"it"
    root.put("cat", "it");
    //3.创建数组,先创建数组中的类
    //{"Id": "1","Name":"温衡","Age":21,"Liked": false},
    JSONObject lan1 = new JSONObject();
    lan1.put("Id", "1");
    lan1.put("Name", "wenheng");
    lan1.put("Age", 21);
    lan1.put("Liked", false);
    //{"Id": "2","Name":"思莞","Age":23,"Liked": false},
    JSONObject lan2 = new JSONObject();
    lan1.put("Id", "2");
    lan1.put("Name", "siwan");
    lan1.put("Age", 23);
    lan1.put("Liked", true);

    //创建一个数组,将创建的类包含进去
    JSONArray array = new JSONArray();
    array.put(lan1);
    array.put(lan2);

    //将数组放入根JSON类中
    root.put("Language", array);

    Log.i("JSON", root + "------");

} catch (JSONException e) {
    e.printStackTrace();
}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值