java之json数据解析:利用第三方fastJson进行解析数据

json语法
json文本文件和XML文本文件有很多类似之处,都是用来存储和传输数据信息的媒介
json不仅可以通过响应文件来作为数据的载体,也可以通过满足语法的字符串来作为数据的载体,我们称这些字符串为json字符串
json中数据称存储主要是通过{}和[]来进行存储的,{}中存储的是双列集合,我们可以理解为字典,[]中存储的是单列集合,我们可以理解为数组
{} 字典中是通过key ,value的形式来存储的,key的数据类型只能是字符串类型,而value可以为任意数据类型,我们要获取数据也是通过key来获取值的
[] 数组中,我们是通过下标来获取值的
总的来说json数据主要是通过{}和[]嵌套来存储数据的.
json数据的解析
在json解析的时候,我们需要用一下第三方,现在普遍运用的是阿里巴巴的fastjson的jar包,下面我们就运用fastjson来学习如何解析数据的.
json数据的解析,我们大致可以分为以下几个步骤:
① 获取要解析的json文件的路径
②我们将json文件通过输入流来将json文件读出来,转换成json字符串
③我们获得json字符串之后,根据json字符串中json的{}和[]一层一层地来解析数据
④创建对象来接收解析得到的数据
其实,我们解析json数据,主要就是操作json字符串
具体的一些注意事项,我们在例子中来说明
我们来解析一个简单的json字符串:

//这是一个我们通过读取json文件获得的json字符串
String jsonString = "{\"name\":\"张三\",\"gender\":\"男\",\"isStudent\" : true,\"age\" : 18}";//注意:"\ \"主要是用来区别{}外面的引号,用来表明\\中的也是字符串
//通过第三方fastJson提供的类方法来获取json数据
//这里我们要注意的是:fastJson包中定义的只有两个类来接收解析后的数据
//一个是:JSONObject和JSONArray:当我们要解析json字符串是以{},则解析后的数据就用JSONObject来接收,如果解析的字符串是以{},则解析后的数据就用JSONObject来接收
JSONObject obj = JSON.parseObject(jsonString);//获得JSONObject,其内部其实是一个map
String name = obj.getString("name");//通过key值来获取value
int age = obj.getIntValue("age");//通过key值获取age
Boolean isStudent = obj.getBoolean("isStudent");

下面我们来看一个字典和数组嵌套的json数据:

//json字符串
String jsonString = "{\"student\":{\"name\":\"张三\",\"age\":18}}";
//因为json数据最外层是{},所以返回的JSONArray
JSONObject obj = JSON.parseObject(jsonString);
JSONObject obj2 = obj.getJSONObject("student");//通过key获得的是内存的数据{},所以是JSONObject 类型的数据
String name = array.getString("name");//通过key值取value
int age = array.getIntValue("age");

上面我们用来接收解析数据的类都是系统类,下面用我们自定的类来接收解析的数据

//自定义的Student类
public class Student
{
String name;
int age;
//注意这里面set方法一定要写
Public void setName(String name)
{
this.name = name;
}
Public void setAge(int age)
{
this.age = age;
}
}
//json字符串
String jsonString = "{\"student\":{\"name\":\"张三\",\"age\":18}}";
JSONObject obj = JSON.parseObject(jsonString);
JSONObject obj2 = obj.getJSONObject("student");//获得student对应的value,因为是{},所以数据类型是JSONObject类型
//将value转换成string类型
String  studentString = obj2.toJsonString();
//JSON的类方法在解析字符串的时候,会根据key来对Student类中的属性给予赋值,要注意的是,这里方法内部是调用了Student类的set方法给予赋值的,所以Student类中一定要写set方法,并且方法名一定要正确,方法名正确了,就会调用,方法内的实现以及参数都无关紧要
Student student = JSON.parse(studentString,Student.class);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值