我使用Gson库,我有一个类,其中有一个arraylist作为其成员之一 我将不同的对象类型添加到此arraylist然后我将其序列化为json
public class MethodParameter {
private String className;
private String methodName;
private ArrayList parameters;
public MethodParameter(){
parameters = new ArrayList();
}
public String getClassName(){
return className;
}
public String getMethodName(){
return methodName;
}
public List<Object> getParameters(){
return parameters;
}
public void setClassName(String value){
className = value;
}
public void setMethodName(String value){
methodName = value;
}
public void setParameters(ArrayList value){
parameters = value;
}
}
然后我转换如下:
Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<MethodParameter>() {}.getType();
String json = gson.toJson(mp, type);
但我得到的只是:
{"className":"MainClass","methodName":"Test","parameters":[]}
参数是一个arraylist,我添加了不同类型的类。如何让它创建正确的json结果?
答案 0 :(得分:0)
我尝试了你的代码和两件事,
translate
定义为列表(只是最佳做法)MethodParameter.parameters
对象中的列表...... 无论如何,这里有一个代码片段,您可以按照自己的意愿行事:
MethodParameter
但在我看来,你可以通过这样做来生成json:
public static void main(String[] args) {
MethodParameter mp = new MethodParameter();
mp.setClassName(String.class.getCanonicalName());
mp.setMethodName("replace");
List<String> parametersList = new ArrayList<String>();
parametersList.add("target");
parametersList.add("sequence");
mp.setParameters(parametersList);
//
Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<MethodParameter>() {
}.getType();
String json = gson.toJson(mp, type);
System.out.println(json);
}