java中对象和json互转

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文件:

java中对象和json互转_第1张图片

生成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! 
 

你可能感兴趣的:(java,json)