2016-04-30 5 views
1

Я использую библиотеку Gson, и у меня есть класс, в котором есть один из его членов.
добавить различные типы объектов в этом ArrayList то я сериализовать его JSonКак преобразовать класс java с 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

показать нам класс и пример того, как вы используете gson .... –

+0

добавлен код .. – Eminem

+0

, что проблема там? вы добавили элементы в список? –

ответ

0

Я попробовал ваш код и 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)); 
Смежные вопросы