Java 在GSON中,是否有方法将内部类中的字段反序列化为父类?
使用GSON,如果我有一些JSON看起来像这样:Java 在GSON中,是否有方法将内部类中的字段反序列化为父类?,java,json,serialization,gson,Java,Json,Serialization,Gson,使用GSON,如果我有一些JSON看起来像这样: { "foo" : "asdf", "bar" : "jkl", "city": { "name": "Los Angeles", "country": "US" } } 是否有一种方法可以通过使用SerializedName注释将其反序列化为类似于此的类 public class SomeDto { String foo; String bar; String ci
{
"foo" : "asdf",
"bar" : "jkl",
"city": {
"name": "Los Angeles",
"country": "US"
}
}
是否有一种方法可以通过使用SerializedName注释将其反序列化为类似于此的类
public class SomeDto {
String foo;
String bar;
String city;
String country;
}
不必创建内部类并编写特殊的反序列化程序
也许是这样的
@SerializedName("city.name")
private String city;
如果需要单个类,可以将“city”声明为Map- Example.java
import java.util.Map;
public class Example {
String foo;
String bar;
Map<String, String> city;
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
public String getBar() {
return bar;
}
public void setBar(String bar) {
this.bar = bar;
}
public Map<String, String> getCity() {
return city;
}
public void setCity(Map<String, String> city) {
this.city = city;
}
@Override
public String toString() {
return "Example [foo=" + foo + ", bar=" + bar + ", city=" + city + "]";
}
}
import com.example.Example;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Main {
private static Gson gson;
static {
gson = new GsonBuilder().create();
}
/**
* @param args
*/
public static void main(String[] args) {
String s = "{\"foo\":\"asdf\",\"bar\":\"jkl\",\"city\":{\"name\":\"Los Angeles\",\"country\":\"US\"}}";
Example info = gson.fromJson(s, Example.class);
System.out.println(info);
}
}
结果
Example [foo=asdf, bar=jkl, city={name=Los Angeles, country=US}]
据我所知-没有。但是,您可以将序列化细节隐藏在一个方便的接口后面 例如:
public class SomeDto {
private String foo;
private String bar;
private City city;
public String getFoo() {...};
public String getBar() {...};
public String getCity() {return city.getName();};
public String getCountry() {return city.getCountry();};
}