FRR*_*FRR 14 post android json laravel
我想知道如何使用改造将自定义对象发送到我的API,如下所示:
@POST(URL_ORDERS)
public void newOrder(Order order, Callback<Boolean> success);
Run Code Online (Sandbox Code Playgroud)
这是我在服务器上解析它的方法
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;
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我得到了
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)
Run Code Online (Sandbox Code Playgroud)
我想我想做的是以某种方式将我的对象转换为json并将其发送到我的服务器.我是以正确的方式接近这个吗?
Jam*_*ken 28
错误来自于未@Body在Order参数上提供注释.将其更改为:
@POST(URL_ORDERS)
public void newOrder(@Body Order order, Callback<Boolean> success);
Run Code Online (Sandbox Code Playgroud)
Retrofit 默认使用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;
}
Run Code Online (Sandbox Code Playgroud)
然后Gson会自动将其序列化为
{
"custom_id": 1,
"name": "Hello Object",
"items": [
{
"id": 1,
"name": "Hello Item"
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20025 次 |
| 最近记录: |