java读取json文件的问题

java读取json文件的问题,第1张

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中文件内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9342625.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存