Рассказ:
У меня есть List<A> list
. Если я использую gson.toJson(list)
- работает нормально.
Если у меня есть ListContainer(list)
, то gson.toJson(listContainer)
возвращает список с пустыми объектами. Зачем? Как я могу решить это?
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class GsonTest {
public static void main(String[] args) {
new GsonTest();
}
public GsonTest() {
Gson gson = new Gson();
List<BasicInterface> kws = new ArrayList<BasicInterface>();
for (int i = 0; i < 3; i++) {
BasicInterface kw = new BasicInterfaceImpl("string_" + i);
kws.add(kw);
}
System.out.print(gson.toJson(kws));
/** Prints: [{"expression":"string_0"},{"expression":"string_1"},{"expression":"string_2"}] */
Container kwc = new Container(kws);
System.out.print(gson.toJson(kwc));
/** Prints: {"list":[{},{},{}]} */
}
}
public class Container {
private List<BasicInterface> list;
public Container(List<BasicInterface> kws) {
this.list = kws;
}
public List<BasicInterface> getList() {
return list;
}
}
public interface BasicInterface {
String getExpression();
}
public class BasicInterfaceImpl implements BasicInterface {
private String expression;
public BasicInterfaceImpl(String expression) {
this.expression = expression;
}
@Override
public String getExpression() {
return expression;
}
}