博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fastjson如何判断JSONObject和JSONArray
阅读量:5897 次
发布时间:2019-06-19

本文共 13431 字,大约阅读时间需要 44 分钟。

1、fastjson如何判断JSONObject和JSONArray,百度一下,教程还真不少,但是是阿里的fastjson的我是没有找到合适的方法。这里用一个还算可以的方法,算是实现了这个效果。

网上贴代码,有时候不把引入的包贴上去,自己使用的话还真不知道是导入那个包咧。

maven依赖的如下所示:

1 
2
3
com.alibaba
4
fastjson
5
1.2.47
6

 实现代码如下所示:

例子主要实现的是解析第一层,然后解析第二层,解析第二层的时候判断是否是JSONArray还是JSONObject类型的。最后我是直接输出的,你肯定是将解析出的信息进行其他操作,这里不做叙述了。

1 package com.fline.aic.utils; 2  3 import com.alibaba.fastjson.JSONArray; 4 import com.alibaba.fastjson.JSONObject; 5  6 public class FastJosnUtils { 7  8     /** 9      * FastJSON10      */11     public static void fastJson() {12         // 1、Json字符串,JSONObject类型的13 //        String message = "{\r\n" + "    \"catalogId\": \"IJ1009\",\r\n"14 //                + "    \"tableName\": \"core_data.uc_gov_org\",\r\n" + "    \"type\": \"POST\",\r\n"15 //                + "    \"condition\": \"null\",\r\n" + "    \"data\": {\r\n" + "        \"DataSource\": \"'P33'\",\r\n"16 //                + "        \"DataStamp\": \"'2018-08-25'\",\r\n" + "        \"GovScCode\": \"'aaa'\",\r\n"17 //                + "        \"OperEffDate\": \"'2018-05-02'\",\r\n" + "        \"OrgCode\": \"'ww'\",\r\n"18 //                + "        \"OrgDesc\": \"'ss'\",\r\n" + "        \"OrgId\": \"1\",\r\n"19 //                + "        \"OrgName\": \"'11111'\",\r\n" + "        \"OrgSeq\": \"11\",\r\n"20 //                + "        \"OrgShortName\": \"'ss'\",\r\n" + "        \"OrgStatus\": \"'ss'\",\r\n"21 //                + "        \"OrgType\": \"'ss'\",\r\n" + "        \"ParentOrgId\": \"0\",\r\n"22 //                + "        \"RegAddress\": \"'ww'\",\r\n" + "        \"RegDate\": \"\",\r\n" + "        \"RegionId\": \"1\"\r\n"23 //                + "    }\r\n" + "}";24         25         // 1、Json字符串,JSONArray类型的26         String message = "{\r\n" + "    \"catalogId\": \"IJ1009\",\r\n"27                 + "    \"tableName\": \"core_data.uc_gov_org\",\r\n" + "    \"type\": \"POST\",\r\n"28                 + "    \"condition\": \"null\",\r\n" + "    \"data\": [{\r\n" + "        \"DataSource\": \"'P33'\",\r\n"29                 + "        \"DataStamp\": \"'2018-08-25'\",\r\n" + "        \"GovScCode\": \"'aaa'\",\r\n"30                 + "        \"OperEffDate\": \"'2018-05-02'\",\r\n" + "        \"OrgCode\": \"'ww'\",\r\n"31                 + "        \"OrgDesc\": \"'ss'\",\r\n" + "        \"OrgId\": \"1\",\r\n"32                 + "        \"OrgName\": \"'11111'\",\r\n" + "        \"OrgSeq\": \"11\",\r\n"33                 + "        \"OrgShortName\": \"'ss'\",\r\n" + "        \"OrgStatus\": \"'ss'\",\r\n"34                 + "        \"OrgType\": \"'ss'\",\r\n" + "        \"ParentOrgId\": \"0\",\r\n"35                 + "        \"RegAddress\": \"'ww'\",\r\n" + "        \"RegDate\": \"\",\r\n" + "        \"RegionId\": \"1\"\r\n"36                 + "    },{\r\n" + 37                 "        \"DataSource\": \"'P33'\",\r\n" + 38                 "        \"DataStamp\": \"'2018-08-25'\",\r\n" + 39                 "        \"GovScCode\": \"'aaa'\",\r\n" + 40                 "        \"OperEffDate\": \"'2018-05-02'\",\r\n" + 41                 "        \"OrgCode\": \"'ww'\",\r\n" + 42                 "        \"OrgDesc\": \"'ss'\",\r\n" + 43                 "        \"OrgId\": \"1\",\r\n" + 44                 "        \"OrgName\": \"'11111'\",\r\n" + 45                 "        \"OrgSeq\": \"11\",\r\n" + 46                 "        \"OrgShortName\": \"'ss'\",\r\n" + 47                 "        \"OrgStatus\": \"'ss'\",\r\n" + 48                 "        \"OrgType\": \"'ss'\",\r\n" + 49                 "        \"ParentOrgId\": \"0\",\r\n" + 50                 "        \"RegAddress\": \"'ww'\",\r\n" + 51                 "        \"RegDate\": \"\",\r\n" + 52                 "        \"RegionId\": \"1\"\r\n" + 53                 "    }]\r\n" + "}";54         // 解析第一层{},由于多种json写到了一起,所以直接引用到了包,自行开发引用自己的Json包就行。55         JSONObject jsonObject = JSONObject.parseObject(message);56         String catalogId = jsonObject.getString("catalogId");57         String schemaTableName = jsonObject.getString("tableName");58         String type = jsonObject.getString("type");59         String condition = jsonObject.getString("condition");60         System.out.println("{catalogId :" + catalogId + ", schemaTableName: " + schemaTableName + ", type: " + type61                 + ", condition:" + condition + "}");62 63         // 解析第二层,如果根据需求可以判断是否是JSONObject还是JSONArray64         JSONArray jsonArray = new JSONArray();65         JSONObject jsonData = new JSONObject();66         String data = jsonObject.getString("data");67         //百度了很对,也没有找到合适的,我是这样判断的是否是JSONArray还是JSONObject68         if (data.contains("[") && data.contains("]")) {69             jsonArray = JSONArray.parseArray(data);70             System.out.println("jsonArray: " + jsonArray);71             //然后可以解析第二层72             for(int i=0;i< jsonArray.size();i++) {73                 JSONObject jsonArrayObject = (JSONObject) jsonArray.get(i);74                 String DataSource = jsonArrayObject.getString("DataSource");75                 String DataStamp = jsonArrayObject.getString("DataStamp");76                 String OrgName = jsonArrayObject.getString("OrgName");77                 String RegAddress = jsonArrayObject.getString("RegAddress");78                 //...等等字段79                 System.out.println("{DataSource: "+DataSource +", DataStamp: " + DataStamp + ", OrgName: " +OrgName +", RegAddress: " + RegAddress);80             }81             82         } else {83             jsonData = JSONObject.parseObject(data);84             System.out.println("jsonData: " + jsonData);85             //然后可以解析第二层86             String DataSource = jsonData.getString("DataSource");87             String DataStamp = jsonData.getString("DataStamp");88             String OrgName = jsonData.getString("OrgName");89             String RegAddress = jsonData.getString("RegAddress");90             //...等等字段91             System.out.println("{DataSource: "+DataSource +", DataStamp: " + DataStamp + ", OrgName: " +OrgName +", RegAddress: " + RegAddress);92         }93     }94 95     public static void main(String[] args) {96         fastJson();97         98     }99 }

 2、JSON官方的判断json字符串是JSONArray还是JSONObject类型的。是这个样子搞得,百度一下,教程还是很多的。这里也简单贴一下。

1 
2
3
org.json
4
json
5
20160810
6

案例代码如下所示:

1 package com.fline.aic.utils;  2   3 import org.json.JSONArray;  4 import org.json.JSONObject;  5 import org.json.JSONTokener;  6   7 public class OrgJsonUtils {  8   9     /** 10      * 单层的orgJson判断是否是JSONObject还是JSONArray. 11      */ 12     public static void simpleJSONObjectOrgJson() { 13         String message = "[{\r\n" + "        \"DataSource\": \"'P33'\",\r\n" 14                 + "        \"DataStamp\": \"'2018-08-25'\",\r\n" + "        \"GovScCode\": \"'aaa'\",\r\n" 15                 + "        \"OperEffDate\": \"'2018-05-02'\",\r\n" + "        \"OrgCode\": \"'ww'\",\r\n" 16                 + "        \"OrgDesc\": \"'ss'\",\r\n" + "        \"OrgId\": \"1\",\r\n" 17                 + "        \"OrgName\": \"'11111'\",\r\n" + "        \"OrgSeq\": \"11\",\r\n" 18                 + "        \"OrgShortName\": \"'ss'\",\r\n" + "        \"OrgStatus\": \"'ss'\",\r\n" 19                 + "        \"OrgType\": \"'ss'\",\r\n" + "        \"ParentOrgId\": \"0\",\r\n" 20                 + "        \"RegAddress\": \"'ww'\",\r\n" + "        \"RegDate\": \"\",\r\n" + "        \"RegionId\": \"1\"\r\n" 21                 + "    }]"; 22         Object json = new JSONTokener(message).nextValue(); 23         if (json instanceof JSONObject) { 24             JSONObject jsonObject = (JSONObject) json; 25             System.out.println(jsonObject); 26             //自行解析即可 27         } else if (json instanceof JSONArray) { 28             JSONArray jsonArray = (JSONArray) json; 29             System.out.println(jsonArray); 30             //自行解析即可 31         } 32     } 33  34     /** 35      * 单层的orgJson判断是否是JSONObject还是JSONArray. 36      */ 37     public static void simpleJSONArrayOrgJson() { 38         String message = "{\r\n" + "        \"DataSource\": \"'P33'\",\r\n" 39                 + "        \"DataStamp\": \"'2018-08-25'\",\r\n" + "        \"GovScCode\": \"'aaa'\",\r\n" 40                 + "        \"OperEffDate\": \"'2018-05-02'\",\r\n" + "        \"OrgCode\": \"'ww'\",\r\n" 41                 + "        \"OrgDesc\": \"'ss'\",\r\n" + "        \"OrgId\": \"1\",\r\n" 42                 + "        \"OrgName\": \"'11111'\",\r\n" + "        \"OrgSeq\": \"11\",\r\n" 43                 + "        \"OrgShortName\": \"'ss'\",\r\n" + "        \"OrgStatus\": \"'ss'\",\r\n" 44                 + "        \"OrgType\": \"'ss'\",\r\n" + "        \"ParentOrgId\": \"0\",\r\n" 45                 + "        \"RegAddress\": \"'ww'\",\r\n" + "        \"RegDate\": \"\",\r\n" + "        \"RegionId\": \"1\"\r\n" 46                 + "    }"; 47         Object json = new JSONTokener(message).nextValue(); 48         if (json instanceof JSONObject) { 49             JSONObject jsonObject = (JSONObject) json; 50             System.out.println(jsonObject); 51             //自行解析即可 52         } else if (json instanceof JSONArray) { 53             JSONArray jsonArray = (JSONArray) json; 54             System.out.println(jsonArray); 55             //自行解析即可 56         } 57     } 58  59     /** 60      * JSON官方 61      */ 62     public static void doubleOrgJson() { 63         // Json字符串 64         /* 65          * String message = "{\r\n" + "    \"catalogId\": \"IJ1009\",\r\n" + 66          * "    \"tableName\": \"core_data.uc_gov_org\",\r\n" + 67          * "    \"type\": \"POST\",\r\n" + "    \"condition\": \"null\",\r\n" + 68          * "    \"data\": {\r\n" + "        \"DataSource\": \"'P33'\",\r\n" + 69          * "        \"DataStamp\": \"'2018-08-25'\",\r\n" + 70          * "        \"GovScCode\": \"'aaa'\",\r\n" + 71          * "        \"OperEffDate\": \"'2018-05-02'\",\r\n" + 72          * "        \"OrgCode\": \"'ww'\",\r\n" + "        \"OrgDesc\": \"'ss'\",\r\n" + 73          * "        \"OrgId\": \"1\",\r\n" + "        \"OrgName\": \"'11111'\",\r\n" + 74          * "        \"OrgSeq\": \"11\",\r\n" + "        \"OrgShortName\": \"'ss'\",\r\n" 75          * + "        \"OrgStatus\": \"'ss'\",\r\n" + "        \"OrgType\": \"'ss'\",\r\n" 76          * + "        \"ParentOrgId\": \"0\",\r\n" + 77          * "        \"RegAddress\": \"'ww'\",\r\n" + "        \"RegDate\": \"\",\r\n" + 78          * "        \"RegionId\": \"1\"\r\n" + "    }\r\n" + "}"; 79          */ 80  81         String message = "{\r\n" + "    \"catalogId\": \"IJ1009\",\r\n" 82                 + "    \"tableName\": \"core_data.uc_gov_org\",\r\n" + "    \"type\": \"POST\",\r\n" 83                 + "    \"condition\": \"null\",\r\n" + "    \"data\": [{\r\n" + "        \"DataSource\": \"'P33'\",\r\n" 84                 + "        \"DataStamp\": \"'2018-08-25'\",\r\n" + "        \"GovScCode\": \"'aaa'\",\r\n" 85                 + "        \"OperEffDate\": \"'2018-05-02'\",\r\n" + "        \"OrgCode\": \"'ww'\",\r\n" 86                 + "        \"OrgDesc\": \"'ss'\",\r\n" + "        \"OrgId\": \"1\",\r\n" 87                 + "        \"OrgName\": \"'11111'\",\r\n" + "        \"OrgSeq\": \"11\",\r\n" 88                 + "        \"OrgShortName\": \"'ss'\",\r\n" + "        \"OrgStatus\": \"'ss'\",\r\n" 89                 + "        \"OrgType\": \"'ss'\",\r\n" + "        \"ParentOrgId\": \"0\",\r\n" 90                 + "        \"RegAddress\": \"'ww'\",\r\n" + "        \"RegDate\": \"\",\r\n" + "        \"RegionId\": \"1\"\r\n" 91                 + "    }]\r\n" + "}"; 92         // 解析第一层{} 93         JSONObject jsonObject = new JSONObject(message); 94         String catalogId = jsonObject.getString("catalogId"); 95         String schemaTableName = jsonObject.getString("tableName"); 96         String type = jsonObject.getString("type"); 97         String condition = jsonObject.getString("condition"); 98         System.out.println("{catalogId :" + catalogId + ", schemaTableName: " + schemaTableName + ", type: " + type 99                 + ", condition:" + condition + "}");100 101         // 解析第二层,如果自己已经明确第二层是[]是JSONArray类型的,如下解析即可102         JSONArray jsonArray2 = jsonObject.getJSONArray("data");103         // 解析第二层,如果自己已经明确第二层是{}是JSONObject类型的,如下解析即可104         // JSONObject jsonObject2 = jsonObject.getJSONObject("data");105         106         107         for (int i = 0; i < jsonArray2.length(); i++) {108             JSONObject jsonArrayObject = (JSONObject) jsonArray2.get(i);109             String DataSource = jsonArrayObject.getString("DataSource");110             String DataStamp = jsonArrayObject.getString("DataStamp");111             String OrgName = jsonArrayObject.getString("OrgName");112             String RegAddress = jsonArrayObject.getString("RegAddress");113             // ...等等字段114             System.out.println("{DataSource: " + DataSource + ", DataStamp: " + DataStamp + ", OrgName: " + OrgName115                     + ", RegAddress: " + RegAddress + "}");116         }117     }118 119     public static void main(String[] args) {120         doubleOrgJson();121         // simpleJSONObjectOrgJson();122         // simpleJSONArrayOrgJson();123     }124 125 }

GSON和jackson,我还未接触过,这里就不叙述了,百度也有很多教程。

待续.....

转载地址:http://hlxsx.baihongyu.com/

你可能感兴趣的文章
酷客多小程序会员体系上线,你不可不知道!
查看>>
objective c:import和include的区别, ""和<>区别
查看>>
CentOS 6.5上部署drbd
查看>>
spring SchedulerFactoryBean 没有创建 Scheduler的实现类bea
查看>>
基于cobbler实现自动化安装系统
查看>>
java基础专栏—IOUtils(4)
查看>>
TimeUnit使用
查看>>
进程管理
查看>>
我的VIM配置(ubuntu)
查看>>
linux 常用配置文件
查看>>
cisco交换机配置练习疑难
查看>>
我的友情链接
查看>>
16、MariaDB工作中遇到的一部分报错的解决方法
查看>>
jdk的fastdebug版本是什么
查看>>
ConcurrentLinkedQueue cas实现分析
查看>>
在论坛中出现的比较难的sql问题:13(循环替换问题)
查看>>
简单的Samba服务器安装
查看>>
blog addr
查看>>
如何选择 Web 前端模板引擎?
查看>>
VMware 上Clone Ubuntu虚拟机后找不到eth0
查看>>