2016-04-30 2 views
1

Ich benutze die Gson-Bibliothek und ich habe eine Klasse, die eine Arraylist als eines ihrer Mitglieder hat.
ich hinzufügen, verschiedene Objekttypen zu dieser Arraylist dann serialisiert ich esWie konvertiere ich eine Java-Klasse, die eine Arraylist zu JSON hat

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

JSon Dann konvertiere ich wie folgt:

Gson gson = new Gson(); 
java.lang.reflect.Type type = new TypeToken<MethodParameter>() {}.getType(); 
String json = gson.toJson(mp, type); 

aber alles, was ich bekommen ist:

{"className":"MainClass","methodName":"Test","parameters":[]}

Parameter ist eine Arraylist, zu der ich Klassen verschiedener Typen hinzufüge. Wie bekomme ich es, um das richtige Json-Ergebnis zu erstellen?

+2

zeigen uns die Klasse und das Beispiel, wie Sie Gson verwenden .... –

+0

den Code hinzugefügt .. – Eminem

+0

was ist das Problem dort? Hast du Elemente zur Liste hinzugefügt? –

Antwort

0

habe ich versucht, den Code und 2 Dinge,

  1. die MethodParameter.parameters als Liste definiert (nur ein best practice)
  2. das Problem im Weg sein können Sie die Liste im MethodParameter Objekt manipulieren. ..

sowieso hier ist ein Ausschnitt arbeiten, wie Sie es tun wollen:

Beispiel:

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

aber meiner Meinung nach können Sie die json von nur tun, diese erzeugen:

System.out.println(gson.toJson(mp, MethodParameter.class)); 
Verwandte Themen