Android Retrofit | Post custom object (send json to server)


I was wondering how could I go about sending a custom object to my API using retrofit, something like this:

public void newOrder(Order order, Callback<Boolean> success);

Here's how I'd parse it on my server

public function store()
        $order = Input::get();
        $table = $order->table;
        $items = $order->items;

            $table->taken = true;


            return true;

    return false;

For some reason I'm getting

06-04 20:45:59.275    6085-6306/com.tesis.restapp.restapp W/dalvikvm´╣Ľ threadid=11: thread exiting with uncaught exception (group=0x40aae210)
06-04 20:45:59.285    6085-6306/com.tesis.restapp.restapp E/AndroidRuntime´╣Ľ FATAL EXCEPTION: Retrofit-Idle
    java.lang.IllegalArgumentException: RestAppApiInterface.newOrder: No Retrofit annotation found. (parameter #1)
            at retrofit.RestMethodInfo.methodError(
            at retrofit.RestMethodInfo.parameterError(
            at retrofit.RestMethodInfo.parseParameters(
            at retrofit.RestMethodInfo.init(

I guess what I want it do to is to somehow transform my object into a json and send it to my server. Am I approaching this the right way?

6/4/2014 11:48:00 PM

Accepted Answer

The error is from not providing the @Body annotation on your Order parameter. Change it to:

public void newOrder(@Body Order order, Callback<Boolean> success);

Retrofit uses Gson to serialize and deserialize JSON by default. Gson uses variable names by default for serialization, but they can be changed using the annotation @SerializedName("replacement_name").

For Example, If your Order class looked like this:

public class Order {
    private int id;
    private String name;
    private List<Item> items;

public class Item {
    private int id;
    private String name;

Then Gson would automatically serialize that to

    "custom_id": 1,
    "name": "Hello Object",
    "items": [
            "id": 1,
            "name": "Hello Item"
6/5/2014 12:03:32 AM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow