我使用 Gson 库,并且有一个类,该类的成员之一是数组列表。
我向此数组列表添加不同的对象类型,然后将其序列化为 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":"测试","parameters":[]}
Parameters 是一个数组列表,我向其中添加不同类型的类。如何让它创建正确的 json 结果?
最佳答案
我尝试了你的代码和两件事,
- 将
MethodParameter.parameters
定义为列表(只是最佳实践) - 问题可能出在您操作
MethodParameter
对象中的列表的方式...
无论如何,这是一个按您希望的方式工作的代码片段:
示例:
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);
}
但在我看来,你可以通过这样做来生成 json:
System.out.println(gson.toJson(mp, MethodParameter.class));
关于java - 如何将具有 arraylist 的 java 类转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36959998/