json基本知识以及常用方法

一、JSONObject的数据是用 {  } 来表示的,

       例如:   { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null  }  

       而JSONArray,顾名思义是由JSONObject构成的数组,用  [ { } , { } , ......  , { } ]  来表示

       例如:    [ {  "id" : "123", "courseID" : "huangt-test", "title" : "提交作业" }  ,  {  "content" : null, "beginTime" : 1398873600000  "endTime" } ] ; 

       表示了包含2个JSONObject的JSONArray。

       可以看到一个很明显的区别,一个最外面用的是 {  }  ,一个最外面用的是 [  ]  ;
       JSON数据的书写格式是:名称/值对。 (1)数据在键值对中   (2)数据由逗号分离   (3)花括号保存对象    (4)方括号保存数组
       JSON的值: (1)数字(整数或者浮点数) (2)字符串  (3)逻辑值 (true或false)  (4) 数组  (5)对象  (6) null


       JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

       JSONObject:fastJson提供的json对象。

       JSONArray:fastJson提供json数组对象。

       JSON.parseArray():将json格式的数据转换成数组格式
       1、这个方法的作用就是将json格式的数据转换成数组格式。

       2、假设有Person这个类,有json类型数据jsonStr = [{"name":"张三","age":"1"},{"name":"李四","age":"4"}],那么

        List lists= json.parseArray(jsonStr,Person.class);lists就可以接收jsonStr了

        String jsonString = "{name:'Antony',age:'12',sex:'male',telephone:'88888'}";
        Staff staff = JSON.parseObject(jsonString, Staff.class);
        在JSON.parseObject的时候,会去填充名称相同的属性。对于Json字符串中没有,而model类有的属性,会为null;对于model类没有,而Json字符串有的属性,不做任何处理。
      
    
二、在 JSON里[]是 Array(也就是数组),{}是Ojbect(也就是对象)

例如 :var dot1=["a"];就是一个数组

            var dot2={"a"};就是一个对象

一个数组是可以包含多个对象的

例如: var dot1=[{a:"a"},{b:"b"}]; dot1就包含了2个对象

同样,dot1={[{a:"a"},{b:"b"}]} 就是一个对象,只是这个对象包含了一个数组。

三、fastjson中常用的方法
 1 public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
2 public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject 
3 public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean 
4 public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
5 public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 

6 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
7 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
8 public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

1.把json字符串转换为实体类

1.1、直接解析为对象(支持深度解析)
T t = JSON.parseObject(jsonstr, T.class); // 解析{...}为对象
List<t> list = JSON.parseArray(jsonstr, T.class); // 解析[{},{}...]为集合

1.2、解析为JSON对象
1.2.1、如果不知道json字符串具体是JSONObject还是JSONArray可以使用
Object obj = JSON.parse(jsonstr); // obj可能为String、JSONArray、JSONObject

1.2.2、如果确定字符串为JSONObject类型
JSONObject parseObject = JSON.parseObject(jsonstr);

1.2.3、如果确定字符串为JSONArray类型
JSONArray jsonarry = JSON.parseArray(jsonstr);
 

2.获取JSONArray对象中的数据
2.1、获取JSONArray中的单个元素作为JSONObject
JSONObject jsonobject = JSONArray.get(i);

2.2、获取JSONArray中的单个元素作为解析后的实体类(直接封装为实体类)
T t = JSONArray.getObject(i, T.class);

2.3、遍历JSONArray
JSONArray jsonarray = JSON.parseArray(jsonstr);
for(int i=0;i<jsonarray.size();i++){
JSONObject jsonobject = JSONArray.get(i);
T t = JSONArray.getObject(i, T.class);
}

3.String类型获取其中节点

String fileJson = "";

JSONObject jsonObject = JSONObject.parseObject(fileJson);

Object data = jsonObject.get("data");

JSONObject.parseArray(String.valueOf(data), ContentInfo.class);
四、解析
  首先要明白一个规律,无论传过来的jsonStr怎么组装,怎么嵌套,都逃不了以下三种,形如[]的JSONArray,形如{}的JSONObject以及“:”连接的键值对,因此解析的第一步要先判断是用parseObject还是parseArray方法(前5种),特别提醒如果直接用方法1,一般要强制转换。前提是你知道传过来的json字符串的格式。第一步解析完之后需要用到下面两类方法来调用:
 public JSONObject getJSONObject(int index);   //读取对象
 public JSONObject getJSONObject(String key);   //读取对象
 public JSONArray getJSONArray (int index);   //读取数组
 public JSONArray getJSONArray (String key);   //读取数组 


 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值