代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
遍历获取JSONObject的所有Key
作者:
亦菲
/ 发布于
2018/1/24
/
1562
JSON解析使用JSONObject.keys()可以获取所有的key值,但是这种方法只能获取一层:比如{"b":"2","c":{"A":"1","B":"2"},"a":"1"},只能够获取b,c,a如果想要获取被嵌套的{"A":"1","B":"2"}中A,B就不可以了
import java.util.Iterator; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class testGetKeys { public static String getKeys(JSONObject test) throws JSONException{ String result = null; testJsonCompare t = new testJsonCompare(); Iterator keys = test.keys(); while(keys.hasNext()){ try{ String key = keys.next().toString(); String value = test.optString(key); int i = t.testIsArrayORObject(value); if(result == null || result.equals("")){ if(i == 0){ result = key + ","; System.out.println("i=0 | key="+key+"| result="+result); }else if( i == 1){ result = key + ","; System.out.println("i=1 | key="+key+"| result="+result); result = getKeys(new JSONObject(value))+","; }else if( i == 2){ result = key + ","; System.out.println("i=2 | key="+key+"| result="+result); JSONArray arrays = new JSONArray(value); for(int k =0;k<arrays.length();k++){ JSONObject array = new JSONObject(arrays.get(k)); result = getKeys(array) + ","; } } }else{ if(i == 0){ result = result + key + ","; System.out.println("i=0 | key="+key+"| result="+result); }else if( i == 1){ result = result + key + ","; System.out.println("i=1 | key="+key+"| result="+result); result = result + getKeys(new JSONObject(value)); }else if( i == 2){ result = result + key + ","; System.out.println("i=2 | key="+key+"| result="+result); JSONArray arrays = new JSONArray(value); for(int k =0;k<arrays.length();k++){ JSONObject array = new JSONObject(arrays.get(k)); result = result + getKeys(array) + ","; } } } }catch(JSONException e){ e.printStackTrace(); } } return result; } public static void main(String args[]) throws org.json.JSONException{ JSONObject test = new JSONObject(); JSONObject test1 = new JSONObject(); try{ test1.put("A", "1"); test1.put("B", "2"); test.put("a", "1"); test.put("c", test1); test.put("b", "2"); System.out.println(test.toString()); }catch(JSONException e){ e.printStackTrace(); } String s = getKeys(test); System.out.println(s); } } testIsArrayORObject是判断一个字符串是array类型还是object public int testIsArrayORObject(String sJSON){ /* * return 0:既不是array也不是object * return 1:是object * return 2 :是Array */ try { JSONArray array = new JSONArray(sJSON); return 2; } catch (JSONException e) {// 抛错 说明JSON字符不是数组或根本就不是JSON try { JSONObject object = new JSONObject(sJSON); return 1; } catch (JSONException e2) {// 抛错 说明JSON字符根本就不是JSON System.out.println("非法的JSON字符串"); return 0; } } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
亦菲
贡献的其它代码
(
24
)
.
输入数字运行相应命令
.
输入时间参数计算年龄
.
sql查询一个字段包含另一个字段内容
.
利用Runtime执行多条linux命令
.
将"字符串"以下划线分割首字母大写
.
遍历获取JSONObject的所有Key
.
通过T-SQL脚本查询表的所有外键
.
图片与byte相互转换
.
导入指定位置文件夹内文件,并移动到指定网站文件夹内
.
udf获取当前月最后一天
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3