簡體   English   中英

如何將具有arraylist的java類轉換為json

[英]How do I convert a java class that has an arraylist to json

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

我嘗試了你的代碼和2件事,

  1. MethodParameter.parameters定義為列表(只是最佳實踐)
  2. 問題可能在於您在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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM