JAvaBeanのオブジェクトxml、json相互回転
7646 ワード
システムとシステムのインタラクションの間では、私たちが伝送するときはテキスト形式でデータ情報を伝達します.次に、javaBeanをjsonに変換する方法と、jsonをjavaBeanに変換する方法について説明します.まず、jsonとjavaBeanを互いに交換できるツールも多いです.例えば、Gson、FastJson、JacksonなどのGsonの例です.
以上は基本的によく使われるいくつかの相互回転の方式で、FastJson、Jacksonも基本的には多くありません.2018-12-06注記、遭遇した現象はjavaBeanがjsonを回転する時、javaBeanの属性がnullの時、変換したjsonはこのkeyがなくて、コードは以下の通りです:簡単なpojo
現象と解決方法
JavaBeanとXMLフォーマットの間で互いに回転し、使用するツールはXStreamであり、xstream-[version]を含むjarパッケージをロードする必要がある.jar,xpp3-[version].JArとxmlpull-[version].JAr以下はコードです.まず最初のPojoオブジェクトです.
2番目のオブジェクト:
サンプルコード
以上の2つのオブジェクトはいずれも簡単なJavaBeanオブジェクトであり、PojoオブジェクトにはPojo 1セットが含まれており、その他は簡単な属性である.@XStreamAliasラベルは、現在のノードに別名を付け、xmlデータに変換した後のノード名です.もちろんXStreamには、XStreamImplicit、@XStreamConverter、@XStreamAsAttributeなどのラベルもありますが、どちらも簡単です.以上javaBeanとjson/xmlフォーマットの間で互いに変換されるコードです
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
以上は基本的によく使われるいくつかの相互回転の方式で、FastJson、Jacksonも基本的には多くありません.2018-12-06注記、遭遇した現象はjavaBeanがjsonを回転する時、javaBeanの属性がnullの時、変換したjsonはこのkeyがなくて、コードは以下の通りです:簡単なpojo
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", "\"\""));
}
JavaBeanと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
}
}
2番目のオブジェクト:
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
以上の2つのオブジェクトはいずれも簡単なJavaBeanオブジェクトであり、PojoオブジェクトにはPojo 1セットが含まれており、その他は簡単な属性である.@XStreamAliasラベルは、現在のノードに別名を付け、xmlデータに変換した後のノード名です.もちろんXStreamには、XStreamImplicit、@XStreamConverter、@XStreamAsAttributeなどのラベルもありますが、どちらも簡単です.以上javaBeanとjson/xmlフォーマットの間で互いに変換されるコードです