JSON数据结构特点及Java解析JSON的方法

在这里插入图片描述
Android JSON解析第三方框架Gson使用详解

JSON简介

JSON数据结构一种与开发语言无关的、轻量级的数据存储格式,全称JavaScript Object
Notation,一种数据格式的标准规范,起初来源于JavaScript这门语言,后来随着使用的广泛,几乎每门开发语言都有处理JSON的API 。

优点:易于人的阅读和编写,易于程序解析与生产,它相比xml格式的数据结构,占用的数据控件更小。

JSON解析

JSON 对象解析

JSON数据结构表示对象一般用大括号{},大括号里面是一种Key-Value的存储形式 ,如下

{"key1":value,"key2":value,"key3":value,...}
  • key 一般是一个字符串
  • value 可以是字符串,数字,boolean,null
{
	"age": 30,
	"name": "张三",
	"isstudent": true
}

Java解析Json需先引入JSON解析包,可先自行百度下载JSON解析包并导入工程
在这里插入图片描述

Java解析JSON方法如下:

try {
    JSONObject jsonObject = new JSONObject(s);
    String name = jsonObject.getString("name");
    int age = jsonObject.getInt("age");
    System.out.println("name="+name +" age=" + age);
} catch (JSONException e) {
    e.printStackTrace();
}

JSON 数组解析

JSON数据结构表示数组一般用中括号[],里面全部是value,value之间用逗号给开

[value,value,...]
  • value 可以是字符串,数字,boolean,null
[ "张三", "李四", "王五" ]

Java解析JSON方法如下:

 JSONArray jsonObject = new JSONArray(result);
 for (int i = 0 ; i < jsonObject.length() ; i  ++){
     String s = (String) jsonObject.get(i);
     System.out.println( "s :" + s);
 }

JSON对象嵌套解析

在前面介绍的JSON数据结构表示对象一般用大括号{},大括号里面是一种Key-Value的存储形式

{"key1":value,"key2":value,"key3":value,...}
  • value的值除了可以是字符串,数字,boolean,null之外,也可以是一个JSON对象
{
	"age": 20,
	"name": "张三",
	"isstudent": true,
	"class": {
		"grade": "18级",
		"classname": "计算机专业"
	}
}

Java解析方法如下:

try {
    JSONObject json = new JSONObject(jsonString);
    JSONObject jsonObject = json.getJSONObject("class");
    String classname = jsonObject.getString("classname");
    String grade = jsonObject.getString("grade");
    System.out.println("classname:"+ classname +" grade:" + grade);

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

JSON对象嵌套数组解析

在前面介绍的JSON数据结构表示对象一般用大括号{},大括号里面是一种Key-Value的存储形式

{"key1":value,"key2":value,"key3":value,...}
  • value也可以是一个JSON数组
{
	"grade": "18级",
	"classname": "计算机专业",
	"students": ["张三", "李四", "王五"]
}

对于这种数据结构Java解析方法

JSONObject jsonObject = new JSONObject(result);
String grade = jsonObject.getString("grade");
System.out.println("grade" + grade);
JSONArray jsonArray = jsonObject.getJSONArray("students");
for (int i = 0; i < jsonArray.length(); i++) {
    String s = (String) jsonArray.get(i);
    System.out.println("s:" + s);
}

总结:JSON的key对应的value 可以是整型、字符型、布尔型、null、JSON数组、JSON对象

JSON对象嵌套JSON数组对象解析

JSON数据结构可以灵活多样,JSON对象和JSON数据可以相互嵌套

{
	"grade": "18级",
	"classname": "计算机专业",
	"students": [{
		"id": "001",
		"age": 30,
		"name": "张三",
		"isstudent": false
	}, {
		"id": "002",
		"age": 25,
		"name": "李四",
		"isstudent": true
	}, {
		"id": "003",
		"age": 26,
		"name": "王五",
		"isstudent": true
	}]
}

Java解析JSON方法

JSONObject jsonObject = new JSONObject(result);
String grade = jsonObject.getString("grade");
System.out.println("grade" + grade);
JSONArray jsonArray = jsonObject.getJSONArray("students");
for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject jsonObject1 = (JSONObject) jsonArray.get(i);
    String name1 = jsonObject1.getString("name");
    int age = jsonObject1.getInt("age");
    System.out.println("name1:" + name1);
    System.out.println("age:" + age);
}
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Teacher.Hu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值