2016-04-30 71 views
1

我使用Gson庫,並且我有一個具有作爲其成員之一的ArrayList的類。
我添加不同的對象類型此ArrayList然後我序列化到JSON如何將具有arraylist的java類轉換爲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

我們展示類和例子你如何使用GSON .... –

+0

添加的代碼.. – Eminem

+0

什麼那裏有問題嗎?你有沒有添加元素到列表中? –

回答

0

我想你的代碼和兩件事情,

  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)); 
相關問題