POJO クラスに「Strings」、「Intigers」などの getter を追加することもできます。これらMap
のメソッドは、結果として を返す必要があります。以下のコードを検討してください。
import java.util.LinkedHashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonProgram {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
MyClass myClass = new MyClass();
myClass.setAddress("New York, Golden St. 1");
myClass.setName("James Java");
myClass.setNumber("444");
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(myClass));
}
}
class MyClass {
private String name;
private String address;
private String number;
@JsonIgnore
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@JsonIgnore
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@JsonIgnore
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
@JsonProperty(value = "Strings")
public Map<String, String> getStrings() {
Map<String, String> map = new LinkedHashMap<String, String>();
map.put("name", getName());
map.put("address", getAddress());
map.put("number", getNumber());
return map;
}
}
結果:
{
"Strings" : {
"name" : "James Java",
"address" : "New York, Golden St. 1",
"number" : "444"
}
}
これはおそらく、使用できる最も洗練されたソリューションではありませんが、単純です。