
Java 读写json格式的文件方法:
一、要解决这个问题首先要知道json格式是什么?
JSON格式:
比如学生有学号,姓名,性别等。
用json表示则为:
{"studno":"11111","studname":"":"男"}(各个字段都是字符型)这代表一个学生的信息。
如果多个,如下:
[{"studno":"122222","studname":"":"男"}]这就是json格式。
二、那如何 *** 作json格式的文件呢?
解答:就是直接读写文件,再把读出来的文件内容格式化成json就可以了。
三、具体 *** 作:
1、有一个实体类,如下:
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) {
thisxueqi = xueqi;
}
public String getXuenian() {
return xuenian;
}
public void setXuenian(String xuenian) {
thisxuenian = xuenian;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
thisstartTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
thisendTime = endTime;
}
public int getMenshu() {
return menshu;
}
public void setMenshu(int menshu) {
thismenshu = menshu;
}
public String getIsReadDB() {
return isReadDB;
}
public void setIsReadDB(String isReadDB) {
thisisReadDB = isReadDB;
}
}
2有一个json格式的文件,存的就是他的信息,如下:
Setsjson:{"xuenian":"2007-2008","xueqi":"1","startTime":"2009-07-19 08:30","endTime":"2009-07-22 18:00","menshu":"10","isReadDB":"Y"}
3具体 *** 作:
/取出文件内容,填充对象
/
public ElectSet findElectSet(String path){
ElectSet electset=new ElectSet();
String sets=ReadFile(path);//获得json文件的内容
JSONObject jo=JSONObjectfromObject(sets);//格式化成json对象
//Systemoutprintln("------------" jo);
//String name = jogetString("xuenian");
//Systemoutprintln(name);
electsetsetXueqi(jogetString("xueqi"));
electsetsetXuenian(jogetString("xuenian"));
electsetsetStartTime(jogetString("startTime"));
electsetsetEndTime(jogetString("endTime"));
electsetsetMenshu(jogetInt("menshu"));
electsetsetIsReadDB(jogetString("isReadDB"));
return electset;
}
//设置属性,并保存
public boolean setElect(String path,String sets){
try {
writeFile(path,sets);
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
return false;
}
}
//读文件,返回字符串
public String ReadFile(String path){
File file = new File(path);
BufferedReader reader = null;
String laststr = "";
try {
//Systemoutprintln("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
//一次读入一行,直到读入null为文件结束
while ((tempString = readerreadLine()) != null) {
//显示行号
Systemoutprintln("line " line ": " tempString);
laststr = laststr tempString;
line ;
}
readerclose();
} catch (IOException e) {
eprintStackTrace();
} finally {
if (reader != null) {
try {
readerclose();
} catch (IOException e1) {
}
}
}
return laststr;
}
//把json格式的字符串写到文件
public void writeFile(String filePath, String sets) throws IOException {
FileWriter fw = new FileWriter(filePath);
PrintWriter out = new PrintWriter(fw);
outwrite(sets);
outprintln();
fwclose();
outclose();
}
4调用,使用(在网站的controller里调用的):
//取出json对象public void GetElectSettings(>
java读取文件非常简单的
File file = new File("D:/java"); //给定一个目录
File[] list = filelistFiles(); //获取目录下的所有文件
for(int i=0; i<listlength; i++){
if(list[i]isFile()){ //判断是否为文件
InputStreamReader isr = new InputStreamReader(new FileInputStream(list[i]),"UTF-8");//读取文件,同时指定编码
StringBuffer sb = new StringBuffer();
char[] ch = new char[128]; //一次读取128个字符
int len = 0;
while((len = isrread(ch,0, chlength)) != -1){
sbappend(ch, 0, len);
}
isrclose();
Systemoutprintln(sb); //将读取完的文件打印出来,你要怎么处理都可以了
}
}
可以使用三种方式,用json接收一个list,方法如下:
1、使用orgjsonJSONArray包:
1
2
3
4
5
6
7
JSONArray
json
=
new
JSONArray();
for(User
u
:
list){
JSONObject
jo
=
new
JSONObject();
joput("id",
ugetId());
joput("title",
ugetName());
jsonput(jo);
}
2、使用netsfjson包下JSONArray的静态方法:fromObject(list),
这是网上大多是直接用此方法快捷转换JSON,但是对于list的要求就是其中的元素是字符串或对象,否则JSON不知道你想要的是什么数据:
1
JSONArray
json
=
JSONArrayfromObject(list);
3、使用google的gson,将list转为json字符串:
在 Java 中,可以使用 json 库来解析和遍历 JSON 对象。以下是一个简单的示例代码,展示如何遍历 JSON 对象并取出所有的 value 值:
假设有以下 JSON 对象:
{
"name": "张三",
"age": 20,
"gender": "male"
}
可以使用以下代码遍历 JSON 对象并取出所有的 value 值:
import orgjsonJSONObject;
public class JsonExample {
public static void main(String[] args) {
// JSON 字符串
String jsonStr = "{\"name\":\"张三\",\"age\":20,\"gender\":\"male\"}";
// 将 JSON 字符串转为 JSONObject 对象
JSONObject jsonObject = new JSONObject(jsonStr);
// 遍历 JSONObject 对象,取出所有 value 值
for (String key : jsonObjectkeySet()) {
Systemoutprintln(jsonObjectget(key));
}
}
}
输出结果如下:
张三
20
male
在上面的代码中,首先将 JSON 字符串转为 JSONObject 对象。然后,使用 keySet() 方法获取所有的键名,遍历 JSONObject 对象,使用 get() 方法获取每个键的值并输出。
package bean;
import comgooglegsonannotationsSerializedName;
import javautilList;
public class TestBean
{
private String status;
private Msg msg;
public String getStatus() {
return status;
}
public void setStatus(String status) {
thisstatus = status;
}
public Msg getMsg() {
return msg;
}
public void setMsg(Msg msg) {
thismsg = msg;
}
public class Msg
{
private List<City> city;
public List<City> getCity() {
return city;
}
public void setCity(List<City> city) {
thiscity = city;
}
public class City
{
@SerializedName("@attributes")
private SpecialKey key;//奇怪的key处理
public SpecialKey getKey() {
return key;
}
public void setKey(SpecialKey key) {
thiskey = key;
}
public class SpecialKey
{
private String cityX;
private String cityY;
private String cityname;
private String centername;
private String fontColor;
private String pyName;
private String state1;
private String state2;
private String stateDetailed;
private String tem1;
private String tem2;
private String temLow;
private String windState;
private String windDir;
private String windPower;
private String humidity;
private String url;
public String getCityX() {
return cityX;
}
public void setCityX(String cityX) {
thiscityX = cityX;
}
public String getCityY() {
return cityY;
}
public void setCityY(String cityY) {
thiscityY = cityY;
}
public String getCityname() {
return cityname;
}
public void setCityname(String cityname) {
thiscityname = cityname;
}
public String getCentername() {
return centername;
}
public void setCentername(String centername) {
thiscentername = centername;
}
public String getFontColor() {
return fontColor;
}
public void setFontColor(String fontColor) {
thisfontColor = fontColor;
}
public String getPyName() {
return pyName;
}
public void setPyName(String pyName) {
thispyName = pyName;
}
public String getState1() {
return state1;
}
public void setState1(String state1) {
thisstate1 = state1;
}
public String getState2() {
return state2;
}
public void setState2(String state2) {
thisstate2 = state2;
}
public String getStateDetailed() {
return stateDetailed;
}
public void setStateDetailed(String stateDetailed) {
thisstateDetailed = stateDetailed;
}
public String getTem1() {
return tem1;
}
public void setTem1(String tem1) {
thistem1 = tem1;
}
public String getTem2() {
return tem2;
}
public void setTem2(String tem2) {
thistem2 = tem2;
}
public String getTemLow() {
return temLow;
}
public void setTemLow(String temLow) {
thistemLow = temLow;
}
public String getWindState() {
return windState;
}
public void setWindState(String windState) {
thiswindState = windState;
}
public String getWindDir() {
return windDir;
}
public void setWindDir(String windDir) {
thiswindDir = windDir;
}
public String getWindPower() {
return windPower;
}
public void setWindPower(String windPower) {
thiswindPower = windPower;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
thishumidity = humidity;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
thisurl = url;
}
}
}
}
}
可以使用Gson,没有可以去网上下载一个。注意bean文件的对应的类型可以改成你自己数据的类型,其实如果没有算数运算全用String最好,免得返回奇怪的东西报错。关键在于用@SerializedName("@attributes")处理奇怪的key
TestBean bean = new Gson()fromJson(json, TestBeanclass);
List<TestBeanMsgCity> cityList = beangetMsg()getCity();
for (int i = 0; i < cityListsize();i++)
{
if (cityListget(i)getKey()getCityname()equals("福州"))
{
// 这就是你要的那条“福州”的对象了
}
}
1:是拼接需要的json数据。
2:是用servlet的内置对象response返回到前台。
3:String 类型的数据可以不用借助任何工具直接返回,只要把它拼接对了就可以。如我需要返回一个{“success”:true,“msg”:“修改失败!”}的json(注意,java里的引号要用的转义字符“\”)。
4:如果需要返回的是一个list或者别的类的化,需要用到JSONArray的辅助工具类,然后使用responsegetWriter()print(),返回到打到前台。方法2:用Spring框架。
5:如果你使用了Spring框架那就更简单了,你只需要在你的方法返回的时候加一个@ResponseBody的注解就可以了。就这么简单。注意第一种方法,拼接json串的时候需要用的到双引号的地方添加转义字符。
以上就是关于java读取json文件的问题全部的内容,包括:java读取json文件的问题、java怎么获取json中的list、java如何读取json中文件内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)