如何将具有arraylist的java类转换为json

时间:2016-04-30 20:38:01

标签: java json arraylist gson

我使用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结果?

1 个答案:

答案 0 :(得分:0)

我尝试了你的代码和两件事,

  1. translate定义为列表(只是最佳做法)
  2. 问题可能在于您操纵MethodParameter.parameters对象中的列表......
  3. 无论如何,这里有一个代码片段,您可以按照自己的意愿行事:

    实施例

    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);
        }