java和json互转,必须使用到json相关的jar包,我这里使用的是json-lib-2.3-jdk15.jar;
废话不多,直接上代码:
实体类(模拟使用):
package demo.entity;
public class DateOne {
private String niC;
private String naMe;
private String assce;
private String hosts;
public DateOne(){}
public DateOne(String niC,String naMe,String assce,String hosts){
this.niC=niC;
this.naMe=naMe;
this.assce=assce;
this.hosts=hosts;
}
//get和set方法太占地,这里去掉
}
package demo.entity;
import java.util.ArrayList;
import java.util.List;
public class DateResponse {
private String id;
private String name;
private String age;
private String code;
private List dateOnes=new ArrayList();
private String[] indexs;
public DateResponse(){}
public DateResponse(String id,String name,String age,String code,List dateOnes,String[] indexs){
this.id=id;
this.name=name;
this.age=age;
this.code=code;
this.dateOnes=dateOnes;
this.indexs=indexs;
}
//get和set方法太占地,这里去掉
}
转换代码如下:
package demo.test;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import org.apache.commons.io.FileUtils;
import demo.entity.DateOne;
import demo.entity.DateResponse;
public class JavaToJson {
public static void main(String[] args) throws UnsupportedEncodingException {
//创建java实体对象
DateOne dateOne=new DateOne("asd","ddd","fff","sss");
DateOne dateOne1=new DateOne("aaa","ccc","ggg","bbb");
List dateOnes=new ArrayList();
dateOnes.add(dateOne);
dateOnes.add(dateOne1);
String[] indexs={"sdsd","dddds","fffs","dwdd"};
DateResponse dr=new DateResponse("vcvc","xxzx","bvcv","dsas",dateOnes,indexs);
//获取当前项目路径作为json文件存放路径
String pathString=URLDecoder.decode(JavaToJson.class.getClassLoader().getResource("").getPath(),"UTF-8");
pathString=pathString.substring(1);
pathString=pathString.replace("/", "\\");
String path=pathString.concat("json\\").concat("objectJson.json");
System.out.println("---- json文件路径: "+path);
javaToJson(path,dr);
System.out.println("java转json--------OK! ");
jsonToJav(path);
System.out.println("json转java--------OK! ");
}
//json转java
public static void jsonToJav(String path){
JSONObject obj=new JSONObject();
try {
//读取json文件内容后转成java对象
String input = FileUtils.readFileToString(new File(path), "UTF-8");
obj= JSONObject.fromObject(input);
} catch (Exception e) {
e.printStackTrace();
}
//将json对象转换为java对象
Map maps=new HashMap();
//简单类型处理,对象中属性都是简单类型
//DateResponse jb = (DateResponse)JSONObject.toBean(obj,DateResponse.class);
//复杂类型处理():DateResponse实体类中存在List dateOnes属性,需要使用map作为参数声明该属性对应class
maps.put("dateOnes", DateOne.class);
DateResponse jb = (DateResponse)JSONObject.toBean(obj,DateResponse.class,maps);
System.out.println("----age:"+jb.getAge()+" -- code: "+jb.getCode()+" -- id: "+jb.getId()+" -- name: "+jb.getName()+" -- index: "+Arrays.toString(jb.getIndexs()));
for(DateOne dateone:jb.getDateOnes()){
System.out.println("----assce: "+dateone.getAssce()+" -- hosts: "+dateone.getHosts()+" -- naMe: "+dateone.getNaMe()+" -- nic: "+dateone.getNiC());
}
}
//java转json
public static void javaToJson(String path,DateResponse dr){
//1、使用JSONObject将java实体类对象转成json对象
JSONObject jsons = JSONObject.fromObject(dr);
String strJson=jsons.toString();
System.out.println("json:\n"+strJson);
File file = new File(path);
try{
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
file.createNewFile();
}else{
if (!file.exists()) {
file.createNewFile();
}else{
//file.delete();
file.createNewFile();
}
}
//将json字符串写入文件
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path),"UTF-8")));
out.write(strJson);
out.println();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:
生成json文件:
生成json文件内容:
{"age":"bvcv","code":"dsas","dateOnes":[{"assce":"fff","hosts":"sss","naMe":"ddd","niC":"asd"},{"assce":"ggg","hosts":"bbb","naMe":"ccc","niC":"aaa"}],"id":"vcvc","indexs":["sdsd","dddds","fffs","dwdd"],"name":"xxzx"}
程序打印结果:
---- json文件路径: .....\JavaToJson\bin\json\objectJson.json
json:
{"age":"bvcv","code":"dsas","dateOnes":[{"assce":"fff","hosts":"sss","naMe":"ddd","niC":"asd"},{"assce":"ggg","hosts":"bbb","naMe":"ccc","niC":"aaa"}],"id":"vcvc","indexs":["sdsd","dddds","fffs","dwdd"],"name":"xxzx"}
java转json--------OK!
----age:bvcv -- code: dsas -- id: vcvc -- name: xxzx -- index: [sdsd, dddds, fffs, dwdd]
----assce: fff -- hosts: sss -- naMe: ddd -- nic: asd
----assce: ggg -- hosts: bbb -- naMe: ccc -- nic: aaa
json转java--------OK!