前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fastjson如何判断JSONObject和JSONArray

fastjson如何判断JSONObject和JSONArray

作者头像
别先生
发布2018-10-09 14:46:34
2.7K1
发布2018-10-09 14:46:34
举报
文章被收录于专栏:别先生别先生

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

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

maven依赖的如下所示:

代码语言:javascript
复制
1 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
2 <dependency>
3     <groupId>com.alibaba</groupId>
4     <artifactId>fastjson</artifactId>
5     <version>1.2.47</version>
6 </dependency>

实现代码如下所示:

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

代码语言:javascript
复制
 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      * FastJSON
10      */
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: " + type
61                 + ", condition:" + condition + "}");
62 
63         // 解析第二层,如果根据需求可以判断是否是JSONObject还是JSONArray
64         JSONArray jsonArray = new JSONArray();
65         JSONObject jsonData = new JSONObject();
66         String data = jsonObject.getString("data");
67         //百度了很对,也没有找到合适的,我是这样判断的是否是JSONArray还是JSONObject
68         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类型的。是这个样子搞得,百度一下,教程还是很多的。这里也简单贴一下。

代码语言:javascript
复制
1 <!-- https://mvnrepository.com/artifact/org.json/json -->
2 <dependency>
3      <groupId>org.json</groupId>
4     <artifactId>json</artifactId>
5     <version>20160810</version>
6 </dependency>

案例代码如下所示:

代码语言:javascript
复制
  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: " + OrgName
115                     + ", RegAddress: " + RegAddress + "}");
116         }
117     }
118 
119     public static void main(String[] args) {
120         doubleOrgJson();
121         // simpleJSONObjectOrgJson();
122         // simpleJSONArrayOrgJson();
123     }
124 
125 }

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

待续.....

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档