关于String字符串转成JsonArray的问题

爱小静 2017-03-16 10:17:53
各位大神,下面这段字符串怎么转成JsonArray或者有什么其他解析的办法可以让我循环拿出里面的值
{
"1": { //凭证序号,如果查询出多条凭证,该序号对应1、2、3...
"manager": null, // 记账人
"subject": "1002001", // 会计科目
"pk_voucher": "1001XE100000000068ZF", // 凭证主键
"attachment": 3, // 附单据数
"detailindex": [ // 分录明细
{
"localdebitamount": 1300, // 本币借方金额
"unitname": null, // 业务单元
"suject": "1002001", // 会计科目
"localcreditamount": 0, // 本币贷方金额
"explanation": "收到四川航空航延款16.7", // 分录摘要
"creditordebit": "借", // 借贷方向
"subjectname": "1002001\\银行存款\\活期存款", // 会计科目名称
"pk_voucher": "1001XE100000000068ZF", // 凭证主键
"dept": null, // 部门
"detailindex": 2 // 分录号,每个会计凭证有多条分录,分录号为1、2、3。。。
},
{
"localdebitamount": 700, // 本币借方金额
"unitname": null, // 业务单元
"suject": "1002001", // 会计科目
"localcreditamount": 0, // 本币贷方金额
"explanation": "收到广西北部湾航空行赔款16.9", // 摘要
"creditordebit": "借", // 借贷方向
"subjectname": "1002001\\银行存款\\活期存款", // 会计科目名称
"pk_voucher": "1001XE100000000068ZF", // 凭证主键
"dept": null, // 部门
"detailindex": 1 // 分录号
}
],
"period": "12", //会计月度
"num": 7, //凭证号,该凭证号为NC中凭证序号,在同一会计年度月底中,改值不会重复
"prepareddate": "2016-12-01 16:23:44", // 制单时间
"account": "青岛国际机场集团有限公司账簿", // 账簿
"year": "2016", // 会计年度
"casher": null, // 出纳
"systypename": "总账", // 系统来源
"checked": "迟明辉", // 审核人
"prepared": "明金妹" // 制单人
}
,

"2":{
"manager": null, // 记账人
"subject": "1002001", // 会计科目
"pk_voucher": "1001XE100000000068ZF", // 凭证主键
"attachment": 3, // 附单据数
"detailindex": [ // 分录明细
{
"localdebitamount": 1300, // 本币借方金额
"unitname": null, // 业务单元
"suject": "1002001", // 会计科目
"localcreditamount": 0, // 本币贷方金额
"explanation": "收到四川航空航延款16.7", // 分录摘要
"creditordebit": "借", // 借贷方向
"subjectname": "1002001\\银行存款\\活期存款", // 会计科目名称
"pk_voucher": "1001XE100000000068ZF", // 凭证主键
"dept": null, // 部门
"detailindex": 2 // 分录号,每个会计凭证有多条分录,分录号为1、2、3。。。
},
{
"localdebitamount": 700, // 本币借方金额
"unitname": null, // 业务单元
"suject": "1002001", // 会计科目
"localcreditamount": 0, // 本币贷方金额
"explanation": "收到广西北部湾航空行赔款16.9", // 摘要
"creditordebit": "借", // 借贷方向
"subjectname": "1002001\\银行存款\\活期存款", // 会计科目名称
"pk_voucher": "1001XE100000000068ZF", // 凭证主键
"dept": null, // 部门
"detailindex": 1 // 分录号
}
],
"period": "12", //会计月度
"num": 7, //凭证号,该凭证号为NC中凭证序号,在同一会计年度月底中,改值不会重复
"prepareddate": "2016-12-01 16:23:44", // 制单时间
"account": "青岛国际机场集团有限公司账簿", // 账簿
"year": "2016", // 会计年度
"casher": null, // 出纳
"systypename": "总账", // 系统来源
"checked": "迟明辉", // 审核人
"prepared": "明金妹" // 制单人
}
}
...全文
1599 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱小静 2017-03-17
  • 打赏
  • 举报
回复
引用
8楼
懂了,谢谢你啦
zyqok 2017-03-17
  • 打赏
  • 举报
回复
引用 6 楼 qq_37554032 的回复:
恩,太感谢了,但是我还有一个问题,就是现在我想分别拿到1,2里面的值,主要是这个我解析不出来[/quote] 方法刚刚已经告诉你了,选循环外层取键值,再循环内层取内层键值,不管多少层,就循环多少次就是。
  • 打赏
  • 举报
回复
#5 楼上说的对, 查询查询api, 你的需求应该基本上都能够实现
爱小静 2017-03-17
  • 打赏
  • 举报
回复
引用 5 楼 sunnyzyq 的回复:
这是你的json(片段),现在我要解析下面这个Json,但我并不知道里面有哪些键和值,现在我来取出这些键值:

{
    "localdebitamount": 1300, 
    "unitname": null, 
    "suject": "1002001", 
    "localcreditamount": 0, 
    "explanation": "收到四川航空航延款16.7", 
    "creditordebit": "借", 
    "subjectname": "1002001\\银行存款\\活期存款", 
    "pk_voucher": "1001XE100000000068ZF", 
    "dept": null, 
    "detailindex": 2
}
开始解析:

public static void main(String[] args) {
		String json = "{\"localdebitamount\":1300,\"unitname\":null,\"suject\":\"1002001\",\"localcreditamount\":0,\"explanation\":\"收到四川航空航延款16.7\",\"creditordebit\":\"借\",\"subjectname\":\"1002001\\\\银行存款\\\\活期存款\",\"pk_voucher\":\"1001XE100000000068ZF\",\"dept\":null,\"detailindex\":2}";
		JSONObject obj = JSONObject.fromObject(json);
		Set<String> keys = obj.keySet();
		for (String key : keys) {
			System.out.println("键 = "+key);
			System.out.println("值 = "+obj.get(key));
			System.out.println("-------------------------------");
		}
	}
运行结果:

键 = localdebitamount
值 = 1300
-------------------------------
键 = unitname
值 = null
-------------------------------
键 = suject
值 = 1002001
-------------------------------
键 = localcreditamount
值 = 0
-------------------------------
键 = explanation
值 = 收到四川航空航延款16.7
-------------------------------
键 = creditordebit
值 = 借
-------------------------------
键 = subjectname
值 = 1002001\银行存款\活期存款
-------------------------------
键 = pk_voucher
值 = 1001XE100000000068ZF
-------------------------------
键 = dept
值 = null
-------------------------------
键 = detailindex
值 = 2
-------------------------------

恩,太感谢了,但是我还有一个问题,就是现在我想分别拿到1,2里面的值,主要是这个我解析不出来
zyqok 2017-03-17
  • 打赏
  • 举报
回复
这是你的json(片段),现在我要解析下面这个Json,但我并不知道里面有哪些键和值,现在我来取出这些键值:

{
    "localdebitamount": 1300, 
    "unitname": null, 
    "suject": "1002001", 
    "localcreditamount": 0, 
    "explanation": "收到四川航空航延款16.7", 
    "creditordebit": "借", 
    "subjectname": "1002001\\银行存款\\活期存款", 
    "pk_voucher": "1001XE100000000068ZF", 
    "dept": null, 
    "detailindex": 2
}
开始解析:

public static void main(String[] args) {
		String json = "{\"localdebitamount\":1300,\"unitname\":null,\"suject\":\"1002001\",\"localcreditamount\":0,\"explanation\":\"收到四川航空航延款16.7\",\"creditordebit\":\"借\",\"subjectname\":\"1002001\\\\银行存款\\\\活期存款\",\"pk_voucher\":\"1001XE100000000068ZF\",\"dept\":null,\"detailindex\":2}";
		JSONObject obj = JSONObject.fromObject(json);
		Set<String> keys = obj.keySet();
		for (String key : keys) {
			System.out.println("键 = "+key);
			System.out.println("值 = "+obj.get(key));
			System.out.println("-------------------------------");
		}
	}
运行结果:

键 = localdebitamount
值 = 1300
-------------------------------
键 = unitname
值 = null
-------------------------------
键 = suject
值 = 1002001
-------------------------------
键 = localcreditamount
值 = 0
-------------------------------
键 = explanation
值 = 收到四川航空航延款16.7
-------------------------------
键 = creditordebit
值 = 借
-------------------------------
键 = subjectname
值 = 1002001\银行存款\活期存款
-------------------------------
键 = pk_voucher
值 = 1001XE100000000068ZF
-------------------------------
键 = dept
值 = null
-------------------------------
键 = detailindex
值 = 2
-------------------------------

爱小静 2017-03-17
  • 打赏
  • 举报
回复
引用 2 楼 qq_28978229 的回复:
用Gson,然后写javabean封装!
Gson我没有用过,我上网搜搜,试一下,谢啦
爱小静 2017-03-17
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
jackson和gson等等都可以。。。
怎么用?我没有用过,有类似的帖子吗?
qq_28978229 2017-03-16
  • 打赏
  • 举报
回复
用Gson,然后写javabean封装!
李德胜1995 2017-03-16
  • 打赏
  • 举报
回复
jackson和gson等等都可以。。。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧