私の理解が正しい場合は、オブジェクト変数として "値"をデシリアライズするかどうかは関係ありません。デシリアライズ後にObject変数をどのように扱うかは、あなたが考えるべきものです。
私はジャクソンと以下を試しました。
クラスのアドレスを作成します。
public class Address {
private String street;
private String city;
private Object zip;
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Object getZip() {
return zip;
}
public void setZip(Object zip) {
this.zip = zip;
}
}
クラスIDを作成します。
public class Id {
private String fname;
private String lname;
private Address addr;
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}
public Address getAddr() {
return addr;
}
public void setAddr(Address addr) {
this.addr = addr;
}
}
主な方法:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Test {
public static void main(String[] args) {
long zip = 12345;
Address addressObj = new Address();
addressObj.setCity("Chicago");
addressObj.setStreet("Some Street");
addressObj.setZip(12345);
Id idObj = new Id();
idObj.setAddr(addressObj);
idObj.setFname("Test");
idObj.setLname("Tester");
ObjectMapper mapper = new ObjectMapper();
//Object to JSON in String
try {
String jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(idObj);
System.out.println(jsonInString);
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
が出力:
{
"fname" : "Test",
"lname" : "Tester",
"addr" : {
"street" : "Some Street",
"city" : "Chicago",
"zip" : 12345
}
}
mainメソッドでは、私は、日時のzip =新しい日時(DateTimeZone.UTC)に郵便番号を変更した場合は、結果は以下の通りである:
{
"fname" : "Test",
"lname" : "Tester",
"addr" : {
"street" : "Some Street",
"city" : "Chicago",
"zip" : {
"weekOfWeekyear" : 40,
"dayOfWeek" : 1,
"dayOfMonth" : 3,
"dayOfYear" : 277,
"weekyear" : 2016,
"monthOfYear" : 10,
"year" : 2016,
"yearOfEra" : 2016,
"yearOfCentury" : 16,
"centuryOfEra" : 20,
"era" : 1,
"millisOfDay" : 83656626,
"millisOfSecond" : 626,
"secondOfMinute" : 16,
"secondOfDay" : 83656,
"minuteOfHour" : 14,
"minuteOfDay" : 1394,
"hourOfDay" : 23,
"chronology" : {
"zone" : {
"fixed" : true,
"id" : "UTC"
}
},
"zone" : {
"fixed" : true,
"id" : "UTC"
},
"millis" : 1475536456626,
"afterNow" : false,
"beforeNow" : true,
"equalNow" : false
}
}
}
ここでのポイントは、あなたがオブジェクト変数を行うこと
を重要なものであるということであるクラスが別々であるかではないことを明示してください:他の1つの内部クラスがあり、OR何? –
はい、クラスは別です – aime