我想知道如何使用改型将自定义对象发送到我的API,比如:

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

下面是我在服务器上解析它的方法

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

        if(!$table->taken){
            $table->taken = true;

            $order->push();
            $table->push();

            return true;
        }
    }

    return false;
}

因为某种原因我变得

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(RestMethodInfo.java:120)
            at retrofit.RestMethodInfo.parameterError(RestMethodInfo.java:124)
            at retrofit.RestMethodInfo.parseParameters(RestMethodInfo.java:443)
            at retrofit.RestMethodInfo.init(RestMethodInfo.java:131)

我想我想要它做的是以某种方式将我的对象转换成json并发送到我的服务器.我这样做对吗?

推荐答案

错误是因为没有在Order参数上提供@Body注释.将其更改为:

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

改型默认使用Gson来序列化和反序列化JSON.Gson默认情况下使用变量名进行序列化,但可以使用注释@SerializedName("replacement_name")进行更改.

例如,如果你的Order个班看起来像这样:

public class Order {
    @SerializedName("custom_id")
    private int id;
    private String name;
    private List<Item> items;
}

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

然后Gson会自动将其序列化为

{
    "custom_id": 1,
    "name": "Hello Object",
    "items": [
        {
            "id": 1,
            "name": "Hello Item"
        }
    ]
}

Laravel相关问答推荐

工厂多对多数据透视表属性

如何获取多态多对多关系子查询的自动 id 列名?

Laravel 9 如何将 url 中的参数从一个控制器传递到另一个控制器?

如何更改 laravel sanctum 返回message: Unauthenticated.

在 laravel 5.3 中截断的错误日志(log)

仅针对字母的 laravel 验证规则

Laravel 错误ReflectionException-类 App\Http\Kernel 不存在

Laravel 4 的 Cron 作业(job)

如何更改 ember-cli 中的 dist 文件夹路径?

如何更改 Handlebars.js 的默认分隔符?

在 Laravel 容器中覆盖单例

禁用Eager的关系

laravel 5.1 在没有 VM 重启的情况下看不到作业(job)文件的更改

Laravel 隐藏属性.例如密码 - 安全

在 Laravel artisan 命令中使用详细

控制器中的laravel foreach循环

Laravel 获取查询字符串

如何判断是否在laravel中使用了分页

Laravel 5.4 Vue.JS 无法挂载组件:未定义模板或渲染函数

Laravel 5 默认注册后如何发送邮件?