java解析json格式文件

/*简单的回了复杂的也就会了*//*其实,json实际上是用来统一数据格式,所以,在使用它时,肯定要设计一下格式,当然,所谓的复杂,只是嵌套的层次深了。。。解析方式并没有变。。个人理解,如果觉得有价值就看,没价值,就当没看见吧。。呵呵。。

*/import java.util.ArrayList;import java.util.HashMap;

import java.util.Iterator;import java.util.Map;

import net.sf.ezmorph.bean.MorphDynaBean;

import net.sf.json.JSONArray;

import net.sf.json.JSONSerializer;

/** * @author John * */

public class JSONDemo {

public static final String PREFIX = "index_";/** *

@param args */

public static void main(String[] args) {

Map map = new HashMap();String str ="[{'status': 5,'remarks': '\\xe6\\xa3\\x80\\xe6\\xb5\\x8b\\xe5\\xb7\\xb2\\xe7\\xbb\\x8f\\xe5\\xae\\x8c\\xe6\\x88\\x90','session': \"(1, '9.2.0.1.0', '192.168.177.115', 1521L, 'ora9', 1, '')\",'vuls': [\"('612300200001', 1, '', [{'values': '['version']', 'type': 0}, {'values': \'['%E7%89%88%E6%9C%AC%E5%8F%B7']\', 'type': 1}])\",\"('612300200002', 1, '', [{'values': '['version']', 'type': 0},{'values': '['%E7%89%88%E6%9C%AC%E5%8F%B7']', 'type': 1},{'values': '['9.2.0.1.0']', 'type': 2}])\"], 'endTime':123}, 1L, '\\xe6\\xb5\\x8b\\xe8\\xaf\\x95\\xe6\\x89\\xab\\xe6\\x8f\\x8f\\xe4\\xbb\\xbb\\xe5\\x8a\\xa1']";System.out.println("json格式字符串-->"+str); JSONArray array = JSONArray.fromObject(str); System.out.println("json格式字符串构造json数组元素的个数-->"+array.size()); ArrayList list = (ArrayList) JSONSerializer.toJava(array); int i = 0; for (Object obj : list) { map.put(PREFIX+(i++), obj); System.out.println("第"+i+"对象-->"+obj); } //解析第0个位置 Map bd = new HashMap(); MorphDynaBean bean = (MorphDynaBean) map.get(PREFIX+0); bd.put("session", bean.get("session")); bd.put("status", bean.get("status")); bd.put("remarks", bean.get("remarks")); bd.put("vuls", bean.get("vuls")); bd.put("endTime", bean.get("endTime")); Iterator iter = bd.keySet().iterator(); while (iter.hasNext()){ Object key = iter.next(); Object value = bd.get(key); System.out.println("MorphDynaBean对象-->key="+key+",value="+value); } //解析vuls ArrayList vuls = (ArrayList) bd.get("vuls"); Map vl = new HashMap(); int j = 0; for (Object obj : vuls) { vl.put(PREFIX+(j++), obj); System.out.println("解析vuls的第"+i+"对象-->"+obj); } }}/* * json格式字符串-->[{'status': 5,'remarks': '\xe6\xa3\x80\xe6\xb5\x8b\xe5\xb7\xb2\xe7\xbb\x8f\xe5\xae\x8c\xe6\x88\x90','session': "(1, '9.2.0.1.0', '192.168.177.115', 1521L, 'ora9', 1, '')",'vuls': ["('612300200001', 1, '', [{'values': '['version']', 'type': 0}, {'values': '['%E7%89%88%E6%9C%AC%E5%8F%B7']', 'type': 1}])","('612300200002', 1, '', [{'values': '['version']', 'type': 0},{'values': '['%E7%89%88%E6%9C%AC%E5%8F%B7']', 'type': 1},{'values': '['9.2.0.1.0']', 'type': 2}])"], 'endTime':123}, 1L, '\xe6\xb5\x8b\xe8\xaf\x95\xe6\x89\xab\xe6\x8f\x8f\xe4\xbb\xbb\xe5\x8a\xa1']json格式字符串构造json数组元素的个数-->3第1对象-->net.sf.ezmorph.bean.MorphDynaBean@94948a[ {session=(1, '9.2.0.1.0', '192.168.177.115', 1521L, 'ora9', 1, ''), status=5, remarks=???????·??????????, vuls=[('612300200001', 1, '', [{'values': '['version']', 'type': 0}, {'values': '['%E7%89%88%E6%9C%AC%E5%8F%B7']', 'type': 1}]), ('612300200002', 1, '', [{'values': '['version']', 'type': 0},{'values': '['%E7%89%88%E6%9C%AC%E5%8F%B7']', 'type': 1},{'values': '['9.2.0.1.0']', 'type': 2}])], endTime=123}]第2对象-->1L第3对象-->???è??????????????MorphDynaBean对象-->key=status,value=5MorphDynaBean对象-->key=session,value=(1, '9.2.0.1.0', '192.168.177.115', 1521L, 'ora9', 1, '')MorphDynaBean对象-->key=remarks,value=???????·??????????MorphDynaBean对象-->key=vuls,value=[('612300200001', 1, '', [{'values': '['version']', 'type': 0}, {'values': '['%E7%89%88%E6%9C%AC%E5%8F%B7']', 'type': 1}]), ('612300200002', 1, '', [{'values': '['version']', 'type': 0},{'values': '['%E7%89%88%E6%9C%AC%E5%8F%B7']', 'type': 1},{'values': '['9.2.0.1.0']', 'type': 2}])]MorphDynaBean对象-->key=endTime,value=123解析vuls的第3对象-->('612300200001', 1, '', [{'values': '['version']', 'type': 0}, {'values': '['%E7%89%88%E6%9C%AC%E5%8F%B7']', 'type': 1}])解析vuls的第3对象-->('612300200002', 1, '', [{'values': '['version']', 'type': 0},{'values': '['%E7%89%88%E6%9C%AC%E5%8F%B7']', 'type': 1},{'values': '['9.2.0.1.0']', 'type': 2}]) */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值