Wie mache ich eine Salve JSONObject Anfrage mit einem benutzerdefinierten Objekt als parameter?

Ich versuche, mich ein JSONObject POST-Anforderung mit der Volley-Bibliothek zu einem server dauert 2 Parameter, ein Objekt (Adresse) und eine Liste von verschiedenen Objekten (Mieter).

Wenn ich versuche, die Anfrage zu machen, der erste parameter (Adresse) formatiert ist Volley, bevor es gesendet wird und die Anfrage wird nicht akzeptiert vom server.

Meine Anfrage sieht wie folgt aus:

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, SERVER_URL,
    postPropertyJSONObject, responseListener, errorListener)

Meine postPropertyJSONObject wird wie folgt erstellt:

JSONObject obj = new JSONObject();
obj.put("Address", convertAddressToJson(property.getAddress()).toString());
obj.put("Tenants", prop.getTenantList());

Den convertAddressToJson() Methode sieht wie folgt aus:

JSONObject jsonObject= new JSONObject();
jsonObject.put("Building", address.getBuilding());
jsonObject.put("Street", address.getStreet());
jsonObject.put("Town", address.getTown());
jsonObject.put("ZipCode", address.getZipCode());
jsonObject.put("County", address.getCounty());
jsonObject.put("Country", address.getCountry());

Versuchte ich nur auf der Durchreise in das Adresse-Objekt, aber das war nicht serialisiert, also es hat nicht funktioniert. Ich habe auch versucht einfach nur die Adresse.toString() in der "Adresse" - Feld des JSONObject verwendet, in die Anfrage, aber das hat nicht funktioniert entweder.

Den getAddress () - Methode des my Property-Objekts gibt ein Adresse-Objekt, die wie folgt aussieht:

public class Address {

    private String Street;
    private String Building;
    private String Town;
    private String ZipCode;
    private String County;
    private String Country;
    //getters and setters
}

Wenn ich Melden Sie die Adresse, bevor ich es passieren das die Anfrage sieht wie folgt aus:

{"Town":"MyTown","Street":"MyStreet","County":"MyCounty","Country":"MyCountry",
 "ZipCode":"MyZipCode","Building":"MyBuilding"}

Aber wenn der server Protokolliert, was es erhalten hat, sieht es so aus:

{\"Town\":\"MyTown\",\"Street\":\"MyStreet\",\"County\":\"MyCounty\",
 \"Country\":\"MyCountry\",\"ZipCode\":\"MyZipCode\",\"Building\":\"MyBuilding\"}"

Diese Formatierung angewendet Volley zu sein scheint, ändern Sie den Wert gebe ich mit meiner Anfrage also, kann mir jemand sagen, ob es einen besseren Weg, diese Aufgabe sollte relativ einfach sein? Ich habe Anfragen an den gleichen server verwenden von String-und Integer-Werte, aber ich habe dieses problem beim übergeben einer benutzerdefinierten Klasse als parameter.

BEARBEITEN

Mit wbelarmino Tipp, ich wechselte mit einer hashmap zu speichern, mein benutzerdefiniertes Objekt und erstellt ein JSONObject aus, dass:

HashMap<String, Address> params = new HashMap<String, Address>();
params.put("Address", prop.getAddress());
requestObject = new JSONObject(params);
InformationsquelleAutor Aido | 2014-07-21
Schreibe einen Kommentar