解析、生成JSON格式数据

JSON:JavaScript对象表示 法(JavaScript Object Notation)
JSON是存储和交换文本信息的语法,是轻量级的文本数据交换格式,独立于语言和平台。
JSON和XML类似,但比XML更小、读写速度更快、更容易解析

JSON建构于两种结构:
1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。


首先我们手动生成一个JSON格式的文件
test.json:

{
  "Languages": [
    {
      "id": 1,
      "ide": "Eclipse",
      "name": "Java"
    },
    {
      "id": 2,
      "ide": "XCode",
      "name": "Swift"
    },
    {
      "id": 3,
      "ide": "Visual Studio",
      "name": "C#"
    }
  ],
  "cat": "it"
}

读取JSON数据

try {
    InputStream is = getAssets().open("test.json");  //获取json文件
    InputStreamReader isr = new InputStreamReader(is, "UTF-8"); //读取到InputStreamReader缓冲区
    BufferedReader br = new BufferedReader(isr); //读取到BufferedReader缓冲区

    String line;
    StringBuilder sb = new StringBuilder();
    while ((line = br.readLine()) != null) {
         sb.append(line);  //把json数据添加到StringBuilder容器中
    }
    br.close();
    isr.close();
    is.close(); //使用后记得关闭

    JSONObject root = new JSONObject(sb.toString());  //通过StringBuilder创建json根对象
    tv.append(root.getString("cat") + "\n");
    JSONArray array = root.getJSONArray("Languages"); //通过根json对象获取Languages数组中的内容
    for (int i = 0; i < array.length(); i++) {
        JSONObject child = array.getJSONObject(i);  //通过json数组对象获取数组中的json子对象
        tv.append( child.getInt("id") + "  "   //显示内容
                   + child.getString("ide") + "  "
                   + child.getString("name") + "  "
                   + "\n");
     }


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

这里写图片描述


我们不仅可以解析JSON数据,我们也可以生成JSON数据:
生成JSON数据

JSONObject root = new JSONObject(); //首先创建一个json根对象
try {
    root.put("cat","it");

    JSONObject child = new JSONObject(); //数组json子对象
    child.put("id",1);
    child.put("ide","Android studio");
    child.put("name","Android");
    JSONArray array = new JSONArray(); //json数组对象
    array.put(child); //把json子对象放到数组中

    root.put("Languages",array);  //把数组放到json根对象中

    System.out.println(root.toString()); 

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

把生成的JSON数据以字符串形式输出:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AidenWU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值