java解析json格式文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java解析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

参考技术A /*简单的回了复杂的也就会了*/
/*其实,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=5
MorphDynaBean对象-->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])
*/本回答被提问者采纳

以上是关于java解析json格式文件的主要内容,如果未能解决你的问题,请参考以下文章

java怎么读取json格式的数据

java怎么读取json格式的数据

java怎么读取json格式的数据

java获取json格式中的值

java解析json格式的文件,纯干货

java校验json格式及内容