javaBean의 대상 xml, json 호환

시스템과 시스템의 상호작용 사이에 우리가 전송할 때 모두 하나의 텍스트 형식으로 데이터 정보를 전달한다. 다음에 자바빈을 어떻게 json으로 전환하는지 설명하자. json을 자바빈으로 전환하는지 설명한다. 먼저 json과 자바빈 사이를 서로 바꿀 수 있는 도구도 비교적 많다. 예를 들어 Gson,FastJson,잭슨 등 Gson 예시가 있다.
public class GsonTest {
	Gson gson = new Gson();
	//      
	public void objToJson(){
			String str =gson.toJson(new Person("name",1));
			System.out.println("    json :"+str);
			System.out.println("json   ");
			Person proson = 	gson.fromJson(str, new TypeToken(){}.getType());
			System.out.println("name:"+proson.getName()+",age:"+proson.getAge());
			
		}
	//      
	public void objsToJson(){
		List listP = new ArrayList<>();
		for(int i=0;i<100;i++){
			listP.add(new Person("name"+i,i));
		}
		String str = gson.toJson(listP);
		
	     System.out.println("    json:"+str);
	     
	    List listP2= gson.fromJson(str, new TypeToken>(){}.getType());
	     System.out.println("JSON   ");
	    System.out.println("  :"+listP2.size());
	    for(int k=0;k map = new HashMap();
		map.put("a", "1");
		map.put("b", "2");
		List listP = new ArrayList<>();
		for(int i=0;i<5;i++){
			listP.add(new Person("name"+i,i));
		}
		map.put("persons", listP);
		String str = gson.toJson(map);
		System.out.println("json:"+str);
		Map maps  = gson.fromJson(str, new TypeToken>(){}.getType());
	        System.out.println("  :"+maps.size());
	        //  
		 for(String key:map.keySet()){
			 //map value       
			 System.out.println("key:"+key+" vlaue:"+map.get(key));
			 if("persons".equals(key)){
				 List listPs = (List)map.get(key);
				 for(int k = 0;k

이상은 기본적으로 모두 자주 사용하는 몇 가지 상호 회전 방식이고FastJson, 잭슨도 기본적으로 차이가 많지 않다.2018-12-06 주석에서 본 현상은 자바빈에서 json을 돌릴 때 자바빈의 속성이null일 때 변환된 json에 이 키가 없으면 코드는 다음과 같다. 간단한 포조
package com.it.code.json.javaBean;

public class Test1VO {
	private String name1;
	private String name2;
	private String name3;
	private String name4;
	private String name5;
	 
	public String getName1() {
		return name1;
	}
	public void setName1(String name1) {
		this.name1 = name1;
	}
	public String getName2() {
		return name2;
	}
	public void setName2(String name2) {
		this.name2 = name2;
	}
	public String getName3() {
		return name3;
	}
	public void setName3(String name3) {
		this.name3 = name3;
	}
	public String getName4() {
		return name4;
	}
	public void setName4(String name4) {
		this.name4 = name4;
	}
	public String getName5() {
		return name5;
	}
	public void setName5(String name5) {
		this.name5 = name5;
	}
	
}


현상 및 해결 방법
//             null,    json       key
	public static void test1(){
	       Test1VO test1vo = new Test1VO();
	       
	       test1vo.setName1("name1");
	       test1vo.setName2("name2");
	        
	       //    null   ,   json    key
	       System.out.println(new Gson().toJson(test1vo));
	       //    null   ,   json  key      null
	       System.out.println(new GsonBuilder().serializeNulls().create().toJson(test1vo));
	       //   sonResult.replaceAll("null","\"\"")    
	       System.out.println(new GsonBuilder().serializeNulls().create().toJson(test1vo).replaceAll("null", "\"\""));
	      
	       //        ,=   \u003d
	       test1vo.setName3("DFDSF=");
	       System.out.println(new GsonBuilder().serializeNulls().create().toJson(test1vo).replaceAll("null", "\"\""));
		     
	       //      
	       System.out.println(new GsonBuilder().disableHtmlEscaping().serializeNulls().create().toJson(test1vo).replaceAll("null", "\"\""));
			 
	}

자바빈과 XML 형식이 서로 바뀌며, 사용하는 도구는 XStream이며, xstream-[version]을 포함하여 불러올 jar 패키지입니다.jar,xpp3-[version].jar 및 xmlpull-[version].jar 다음은 코드: 첫 번째 Pojo 객체:
import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("pojo") 
public class Pojo {
	@XStreamAlias("name") 
	private String name ;
	 @XStreamAlias("age") 
	private String age;
	 @XStreamAlias("list") 
	 private List list;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public Pojo(String name, String age, List list) {
		super();
		this.name = name;
		this.age = age;
		this.list = list;
	}
	public List getList() {
		return list;
	}
	public void setList(List list) {
		this.list = list;
	}
	public Pojo(String name, String age) {
		super();
		this.name = name;
		this.age = age;
	}
	public Pojo() {
		super();
		// TODO Auto-generated constructor stub
	}

}

두 번째 객체:
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("pojo1") 
public class Pojo1 {
	@XStreamAlias("sum") 
	private String  sum;
	public String getSum() {
		return sum;
	}
	public void setSum(String sum) {
		this.sum = sum;
	}
	public Pojo1() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Pojo1(String sum) {
		super();
		this.sum = sum;
	}
}


예제 코드
import java.util.ArrayList;
import java.util.List;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.XppDriver;
import com.xml.pojo.Pojo;
import com.xml.pojo.Pojo1;
public class testXML {
	public static String getXML(){
					System.out.println("       XML");
					String XML="";
					XStream xStream = new XStream(new XppDriver());
					Pojo p = new Pojo();
					p.setAge("1");
					p.setName("1");
					List list = new ArrayList();
					for(int i=1;i<10;i++){
						Pojo1 pojo1 = new Pojo1();
						pojo1.setSum(i+"");
						list.add(pojo1);
					}
					p.setList(list);
					//                
					xStream.processAnnotations(Pojo.class);
					XML = xStream.toXML(p);
					System.out.println(XML);
					System.out.println("       XML");
					return XML;
				}
			    public static void fromOnject(String XML){
			    	System.out.println("XML       ");
			    	System.out.println(XML);
			    	XStream xStream = new XStream(new XppDriver());
			    	//        
			    	XStream.setupDefaultSecurity(xStream);
			    	//        ,            xml  
			    	xStream.allowTypes(new Class[]{Pojo.class, Pojo1.class});
			    	xStream.processAnnotations(Pojo.class);
					Pojo p  = (Pojo)xStream.fromXML(XML);				
					System.out.println(p.getAge());
					System.out.println(p.getName());
					List pojo1s  = p.getList();
					for(int i = 0;i

상기 두 대상은 모두 간단한 자바빈 대상입니다. Pojo 대상에는 Pojo1 집합이 포함되어 있고 나머지는 모두 간단한 속성입니다. @XStreamAlias 태그는 현재 노드에 별명을 붙여 xml 데이터로 변환한 노드의 이름입니다.물론 XStream에는 XStream Implicit, @XStream Converter, @XStream As Attribute 등 다른 탭도 있는데 모두 비교적 간단하다.이상은javaBean과 json/xml 형식 사이의 상호 변환 코드입니다

좋은 웹페이지 즐겨찾기