java读取json文件并解析,java解析json格式文件,再保存在数据库怎么做?
java读取json文件并解析,java解析json格式文件,再保存在数据库怎么做?详细介绍
本文目录一览: java如何解析文件夹下的json文件
json文件?你说的是里面的内容是json格式的文件吧?
个人比较习惯用import net.sf.json.*;来解析json字符串。。
JSONArray array=JSONArray.fromObject(object);可以把一个object转换成json格式的数组,当然了,符合标准的json格式数组的字符串也能够用它解析。
JSONObject obj=JSONObject.fromObject(object);可以把一个object转换成json格式的对象,当然了,符合标准的json格式的字符串也能够用它解析。
在JSONObject中,调用getString("keyName")就能够得到对应的value了
用文件流读出文件内容,然后再解析。
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数组
可以使用 fastjson , 需要下载并导入 fastjson,
fastjson 下载链接:网页链接
运行结果:
代码如下:
import java.text.SimpleDateFormat;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;public class App { public static void main(String[] args) { String str = "{\r\n" + "\"title\":\"创建语音\",\r\n" + "\"content\":[\r\n" + "{\r\n" + "\"labels\":[\"很好看\",\"很好吃\"],\r\n" + "\"voiceUrl\":\"/voice/1323423.pcm\",\r\n" + "\"voiceText\":\"很好\",\r\n" + "\"createDate\":\"2018-06-11 14:29:43\"\r\n" + "},\r\n" + "{\r\n" + "\"labels\":[\"很好看1\",\"很好吃\"],\r\n" + "\"voiceUrl\":\"/voice/1323423.pcm\",\r\n" + "\"voiceText\":\"很好\",\r\n" + "\"createDate\":\"2018-07-26 14:30:43\"\r\n" + "}\r\n" + "],\r\n" + "\"enterpriseId\":\"20180726\"\r\n" + "}"; JSONObject obj = JSON.parseObject(str); System.out.println("title: " + obj.getString("title")); System.out.println("enterpriseId: " + obj.getString("enterpriseId")); JSONArray content = obj.getJSONArray("content"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (int i = 0; i < content.size(); i++) { JSONObject item = content.getJSONObject(i); System.out.print("labels: " + item.getString("labels")); System.out.print(", createDate: " + dateFormat.format(item.getDate("createDate"))); System.out.println(); } }}
package java_email.demo; import com.google.gson.JsonArray;import com.google.gson.JsonObject;import com.google.gson.JsonParser; public class ReadJSON { public static void main(String args[]){ JsonParser parser=new JsonParser(); //创建JSON解析器 String json = "{\"title\":\"创建语音\",\"content\":[{\"labels\":[\"很好看\",\"很好吃\"],\"voiceUrl\":\"/voice/1323423.pcm\",\"voiceText\":\"很好\",\"createDate\":\"2018-06-11 14:29:43\"},{\"labels\":[\"很好看1\",\"很好吃\"],\"voiceUrl\":\"/voice/1323423.pcm\",\"voiceText\":\"很好\",\"createDate\":\"2018-07-26 14:30:43\"}],\"enterpriseId\":\"20180726\"}"; JsonObject object=(JsonObject) parser.parse(json); //创建JsonObject对象 System.out.println("title="+object.get("title")); // System.out.println("enterpriseId="+object.get("enterpriseId")); JsonArray array = object.get("content").getAsJsonArray(); //得到为json的数组 System.out.println("content="+array); for(int i=0;i
<array.size();i++){ jsonobject subobject="array.get(i).getAsJsonObject();" system.out.println("labels="+subObject.get(" labels")); system.out.println("createdate="+subObject.get(" createdate")); } }}
工具/原料
安装有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文件,在本地有E:a.json文件,想读取这个json文件里面的内容,怎样实现
//saveJsonFile("E:\\yindd\\slaughter.json");
//json文件存放路径(如:E:\a.json)
String data= ReadFile.readFile("F:\\a.json");
System.out.println(data);
JSONObject jsonObj = JSONObject.fromObject(data);
//得到A对象
JSONArray arrayA=jsonObj.getJSONArray("A");
A a = (A) JSONObject.toBean((JSONArray.fromObject(arrayA.toString()).getJSONObject(0)),A.class);
//得到B集合
JSONArray arrayB=jsonObj.getJSONArray("B");
List listB=new ArrayList();
for(int i=0;i
<arrayb.size();i++){
B b=(B)JSONObject.toBean((JSONArray.fromObject(arrayB.toString()).getJSONObject(i)),B.class);
listB.add(b);
}
//得到C集合
JSONArray arrayC=jsonObj.getJSONArray("C");
List
listC=new ArrayList
();
for(int i=0;i
<arrayb.size();i++){
C c=(C)JSONObject.toBean((JSONArray.fromObject(arrayC.toString()).getJSONObject(i)),C.class);
listB.add(c);
}
</arrayb.size();i++){
</arrayb.size();i++){
java怎么将json文件读取进来并转成map
json是键值对的形式这点和hashmap很想,第一,先把json解析出来其实就是得到值得过程,然后把你的值自己弄一个键存在hashmap里面,其实很简单就是一个解析和存储到map里面的过程,又不懂得可以问我。最后提醒一点从网络上接受的字符串有肯能前面有影藏的东西,解析可能会报错,而且不同的jar包也会有不同
用JSONUtil.deserialize()就可以了,范例:
import org.apache.struts2.json.JSONUtil;public class JsonToJava { public static void main(String[] args) { try { String s = JSONObject.toString(); Object o = JSONUtil.deserialize(s); Object o1 = ((HashMap)o).get("DATA");//此举将DATA作为对象,得到。 Map map = (Map)o1;//然后强转o1 } catch (Exception e) { e.printStackTrace(System.out); } }}
你需要将json数据解析出来,然后根据数据类型,把数据放入map中
JsonObject 一个Google、的 将json转换为对象的包
java中解析json文件,需要下载json解析包,用JSONUtil.deserialize()就可以了,范例:
import org.apache.struts2.json.JSONUtil; public class JsonToJava { public static void main(String[] args) { try { String s = JSONObject.toString(); Object o = JSONUtil.deserialize(s); Object o1 = ((HashMap)o).get("DATA");//此举将DATA作为对象,得到。 Map map = (Map)o1;//然后强转o1 } catch (Exception e) { e.printStackTrace(System.out); } }}
java中Json怎样解析数据?
用Gson,谷歌提供开源框架,用法非常简单,一行代码完成任何形式的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");Iterator
itr = jsonArr.iterator();JSONArray temp;while(itr.hasNext()) {temp = itr.next();System.out.println("===========Each JSONArray=========");for(int i = 0; i
<temp.size(); i++) {system.out.println(temp.get(i));}}}private static class jsondata {private 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格式文件
/*简单的回了复杂的也就会了*/
/*其实,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数据格式,你只需要使用JsonStore 等等工具包即可进行便捷的读取了。代码比较简单,通俗易懂,具体JsonStore可以百度一下详细信息。
/** * 由字符串反序列化成实体类 针对的是一个实体,此实体中的属性不包括自定义的类型,如Teacher类型,或者List
类型 * @param source 传入json中的字符串 * @param beanClass 实体类的类型 * @return 实体类 */ public static Object getObjFromJsonArrStr(String java,Class beanClass) { JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(source); return JSONObject.toBean(jsonObject,beanClass); }反序列化。以上是一段示例代码
json数据如果是标准的json数据的话你可以下载json的jar包然后找在找怎么使用json的jar包
java怎么取json数据的值
通过ajax,json是属于JS的范畴,去看看如何通过ajax异步交互
获取JSON的值。 就是解析JSON数据.
如果是简单的JSON数据, 并且只需要提取少量数据的值, 那么可以使用字符串的操作来实现,比如String.subString()...等
如果是比较复杂的JSON数据,或者需要提取的值比较多, 那么可以使用Gson, FastJSon 等第三方的jar来实现...
简单的Demo示例
第三方包使用的是Gson
import com.google.gson.JsonElement;import com.google.gson.JsonObject;import com.google.gson.JsonParser;public class GsonTest { public static void main(String[] args) { String strJson = "{ \"name\": \"张三\", \"age\": 12 }"; JsonParser parser = new JsonParser(); JsonElement je = parser.parse(strJson); JsonObject jobj = je.getAsJsonObject();//从json元素转变成json对象 String name = jobj.get("name").getAsString();//从json对象获取指定属性的值 System.out.println(name); int age = jobj.get("age").getAsInt(); System.out.println(age); }}