java中怎样读取一个json格式的文件然后返回一个对象

java中怎样读取一个json格式的文件然后返回一个对象,第1张

网页可以发送一个普通的请求,附带一个json字符串的参数。

服务器端就是接受一个普通的请求并取得参数,json是一串普通的字符串,所以怎么处理随便你,你可以自己写个类来解析json。或者使用别人写好的jar包。

json是一个固定格式的字符串, 其中只有数字和字符串、数组、对象几种种格式,字符串要用双引号括起来 分为数组和对象2种表示形式,数组是用[]括起来的,每个元素间用逗号隔开,获取元素跟java一样使用下标获取; 对象是用{}括起来的,这个对象只有属性和值,格式为 key:value,key:value,key:value。。。,key相当于java对象中的属性名,value就是属性值 举例 ["a","dddd","tttt"]这是数组 {a:1,b:2,c:5} 这个是对象,获取用对象。key取值 复杂一点的无非就是数组、对象互相嵌套 比如 [{a:2,b:2},{a:4,b:9}] {a:[1,2,3,4],b:5,c:{d:2,gg:4}}这类的格式,当你知道它的数组和对象表现形式后很容易明白里边的意思 获得服务器端JSON(其实就是一段有格式的字符串),可以通过string的split()方法拆分,然后再转化成一个个js对象当然要用JSON得先导一个JSON的jar包

/简单的回了复杂的也就会了/

/其实,json实际上是用来统一数据格式,所以,在使用它时,肯定要设计一下格式,

当然,所谓的复杂,只是嵌套的层次深了。。。解析方式并没有变。。个人理解,如果觉得有价值就看,没价值,就当没看见吧。。

呵呵。。

/

import javautilArrayList;

import javautilHashMap;

import javautilIterator;

import javautilMap;

import netsfezmorphbeanMorphDynaBean;

import netsfjsonJSONArray;

import netsfjsonJSONSerializer;

/

@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, '92010', '192168177115', 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': '['92010']', 'type': 2}])\"], 'endTime':123}, 1L, '\\xe6\\xb5\\x8b\\xe8\\xaf\\x95\\xe6\\x89\\xab\\xe6\\x8f\\x8f\\xe4\\xbb\\xbb\\xe5\\x8a\\xa1']";

Systemoutprintln("json格式字符串-->"+str);

JSONArray array = JSONArrayfromObject(str);

Systemoutprintln("json格式字符串构造json数组元素的个数-->"+arraysize());

ArrayList list = (ArrayList) JSONSerializertoJava(array);

int i = 0;

for (Object obj : list) {

mapput(PREFIX+(i++), obj);

Systemoutprintln("第"+i+"对象-->"+obj);

}

//解析第0个位置

Map bd = new HashMap();

MorphDynaBean bean = (MorphDynaBean) mapget(PREFIX+0);

bdput("session", beanget("session"));

bdput("status", beanget("status"));

bdput("remarks", beanget("remarks"));

bdput("vuls", beanget("vuls"));

bdput("endTime", beanget("endTime"));

Iterator iter = bdkeySet()iterator();

while (iterhasNext()){

Object key = iternext();

Object value = bdget(key);

Systemoutprintln("MorphDynaBean对象-->key="+key+",value="+value);

}

//解析vuls

ArrayList vuls = (ArrayList) bdget("vuls");

Map vl = new HashMap();

int j = 0;

for (Object obj : vuls) {

vlput(PREFIX+(j++), obj);

Systemoutprintln("解析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, '92010', '192168177115', 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': '['92010']', '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对象-->netsfezmorphbeanMorphDynaBean@94948a[

{session=(1, '92010', '192168177115', 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': '['92010']', 'type': 2}])], endTime=123}

]

第2对象-->1L

第3对象-->è

MorphDynaBean对象-->key=status,value=5

MorphDynaBean对象-->key=session,value=(1, '92010', '192168177115', 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': '['92010']', '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': '['92010']', 'type': 2}])

/

引用json文件?这个说法够奇怪的。

JSON格式对象的 *** 作可以借助于第三方包JSON-lib(需要其他依赖包)或者orgjson(不需要其他依赖包)来 *** 作。

你所说的引用JSON文件,是对json格式的文件进行 *** 作么?如果是那样的话可以利用IO流,读取文件中的字符串,再利用JSON-lib或者orgjson进行处理。

直接读写文件,再把读出来的文件内容格式化成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) {

   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;

}

}

有一个json格式的文件,存的信息如下:

Setsjson:

{"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=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;

}

将获取到的字符串,入库即可。

public class JsonText {

public static void main(String[] args) {

String jsonstr="[{'columnId':5,'columnName':'人文历史'},{'columnId':2,'columnName':'商业视野'}]";

JSONArray arr=JSONArrayfromObject(jsonstr);//先转化成json数组

JSONObject js=JSONObjectfromObject(arrget(0)toString());//获取数组第一个json的字符串 并转化成json对象

Systemoutprintln(jsgetString("columnName"));//获取columnName值

}

以上就是关于java中怎样读取一个json格式的文件然后返回一个对象全部的内容,包括:java中怎样读取一个json格式的文件然后返回一个对象、什么是JSON文件,java中如何从里面存取数据、java解析json格式文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存