
网页可以发送一个普通的请求,附带一个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格式文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)