「解析jsonjava」解析json存储到数据库
本篇文章给大家谈谈解析jsonjava,以及解析json存储到数据库对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java中Json怎样解析数据?
你这个JSON格式,就是数组里面放数组,所以是,取JSON对象》取JSON数组data》取JSON数组。
import java.util.ArrayList;import java.util.Iterator;import net.sf.json.*;public class MainClass {/*** @param args*/public static void main(String[] args) {JSONObject jsonObj = JSONObject.fromObject(JsonData.getData());JSONArray jsonArr = jsonObj.getJSONArray("data");IteratorJSONArray itr = jsonArr.iterator();JSONArray temp;while(itr.hasNext()) {temp = itr.next();System.out.println("===========Each JSONArray=========");for(int i = 0; itemp.size(); i++) {System.out.println(temp.get(i));}}}private static class JsonData {private static String getData() {return "{\"data\":[[5000235,2,3441,8,17,\"北京测试\",\"10000101111\",\"\",\"\",\"100001\",\"\",\"2011-09-23 17:20:07\",18,\"vhcDefaultPwd\",1,0,\"2011-09-20 00:00:00\",12,0,380,\"测试\",213,1,0,0,0,0,0,\"2012-11-05 14:35:23\",\"\"],[5000236,27,3442,10,17,\"北京测试2\",\"1230000\",\"\",\"\",\"2010920002\",\"111111\",\"2011-09-23 17:20:08\",18,\"vhcDefaultPwd\",1,0,\"2011-09-20 00:00:00\",12,0,380,\"测试2\",213,1,0,0,0,0,0,\"2012-11-05 14:35:23\",\"\"]]}";}}}
java解析json格式文件,再保存在数据库怎么做?
java解析json格式文件,再保存在数据库的方法:
1:定义一个实体类
2:用json lib将json字符串转为Java对象
3:用jdbc或hibernate将java对象存入数据库
直接读写文件,再把读出来的文件内容格式化成json,再用JDBC、Mybatis或者其他框架将json数据存入数据库。
假设实体类是这样的:
public class ElectSet {
public String xueqi;
public String xuenian;
public String startTime;
public String endTime;
public int menshu;
public String isReadDB;
//{"xueqi":,"xuenian":,"startTime":,"endTime":,"renshu":,"isReadDB":}
public String getXueqi() {
return xueqi;
}
public void setXueqi(String xueqi) {
this.xueqi = xueqi;
}
public String getXuenian() {
return xuenian;
}
public void setXuenian(String xuenian) {
this.xuenian = xuenian;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public int getMenshu() {
return menshu;
}
public void setMenshu(int menshu) {
this.menshu = menshu;
}
public String getIsReadDB() {
return isReadDB;
}
public void setIsReadDB(String isReadDB) {
this.isReadDB = isReadDB;
}
}
有一个json格式的文件,存的信息如下:
Sets.json:
{"xuenian":"2007-2008","xueqi":"1","startTime":"2009-07-19 08:30","endTime":"2009-07-22 18:00","menshu":"10","isReadDB":"Y"}
具体操作:
/*
* 取出文件内容,填充对象
*/
public ElectSet findElectSet(String path){
ElectSet electset=new ElectSet();
String sets=ReadFile(path);//获得json文件的内容
JSONObject jo=JSONObject.fromObject(sets);//格式化成json对象
//System.out.println("------------" jo);
//String name = jo.getString("xuenian");
//System.out.println(name);
electset.setXueqi(jo.getString("xueqi"));
electset.setXuenian(jo.getString("xuenian"));
electset.setStartTime(jo.getString("startTime"));
electset.setEndTime(jo.getString("endTime"));
electset.setMenshu(jo.getInt("menshu"));
electset.setIsReadDB(jo.getString("isReadDB"));
return electset;
}
//设置属性,并保存
public boolean setElect(String path,String sets){
try {
writeFile(path,sets);
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
//读文件,返回字符串
public String ReadFile(String path){
File file = new File(path);
BufferedReader reader = null;
String laststr = "";
try {
//System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
//一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
//显示行号
System.out.println("line " line ": " tempString);
laststr = laststr tempString;
line ;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
return laststr;
}
将获取到的字符串,入库即可。
如何java解析json数组
工具/原料
安装有eclipse软件的电脑一台
方法/步骤
1
首先我们在eclipse中创建一个java工程,在java工程中创建一个HelloWorld的类,在这个java的入口程序中,我们来创建一个json字符串,并且打印出来,如下图:
2
将我们刚刚创建的json字符串打印出来如下所示,可以看出这个json包含了一个大json对象,大json对象里面又包含一个json数组,一个数组里面又包含三个json对象,如下图:
3
在java中我们要解析json数组必须借助第三方包,所以这里我们加载一下第三方包,首先我们将鼠标移动到项目名称上面去,然后右键召唤出右键快捷菜单,然后依次点击Build Path-Configure Build Paht...,如下图:
4
然后我们按照图中红色方框所示点击Libraries,然后点击Add Library...,如下图所示:
5
然后我们继续按照图中所示点击User Library,然后点击Next,如下图:
6
然后我们继续按照图中红色方框所示点击User Libraries...,如下图:
7
然后我们点击New...,来开始创建我们自己的libraries,如下图:
8
然后我们输入我们自己jar库的名字,这里我使用了jsonjar作为我们的名字,如下图:
9
接下来为我们的jar库添加jar包,我们按照下图中红色方框所示点击“Add External JARs”,如下图:
10
我们添加json相关的jar包,这里涉及json的第三方包主要包括这七个,所以我们把这七个包都引入到我们自己的jar库中去,如下图:
11
返回到User Libraries中发现,我们已经引入了所有的jar包,如下图:
我们按照下图中红色方框所示画勾,然后点击finish,如下图:
然后我们按照图中红色边框所示点击Apply,然后点击OK,如下图:
回到我们的工程中,从工程目录中我们可以看到,我们已经添加了自己的名字为jsonjar的jar库,如下图:
接下来我们回到程序中,在头部添加“import net.sf.json.JSONArray;import net.sf.json.JSONObject;”这两句代码,这两句表示引入了解析json的对象和数组的包,如下图:
然后我们通过代码“JSONObject.fromObject(json_array)”来将我们之前创建的json字符串转换成json对象,并且通过键值对的方式打印出json对象名字为“employees”的值,如下图:
打印出的名字为“employees”的json对象的值如下图是一个数组字符串,如下图:
接下来我们通过代码“jsonobj.getJSONArray("employees")”来将获取的数组字符串转变成为json组数,如下图:
并且我们打印出json数组的长度,可见程序计算的json数组的长度和我们实际的数组长度相一致,如下图:
接下来我们通过一个for循环将我们获取的json数组中的值依次取出来,由于数组中又包含3个对象,我们又需要将3个对象使用代码“JSONObject.fromObject(jsonarr.get(i));”将得到的对象字符串变成对象然后再取出来,如下图:
最后,我们将json数组的所有内容都展示到控制台,这样我们就可以使用java通过第三方json包来解析json数组了,如下图:
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=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}])
*/
解析jsonjava的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于解析json存储到数据库、解析jsonjava的信息别忘了在本站进行查找喔。
发布于:2022-11-24,除非注明,否则均为
原创文章,转载请注明出处。