我通过使用Volley进行HTTP GET来检索Inventory对象:
JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET,
Constants.API_URL + "inventory/lastInventoryWithLines/" + MyContext.User.getSiteId().toString(), null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
Gson gson = new Gson();
inventory[0] = gson.fromJson(response.toString(), Inventory.class);
...
} catch (Exception e) {
Log.e("InventoryActivity", e.getMessage());
}
finally {
showProgress(false);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
...
}
}
);
queue.add(req);
重要的一点是:
gson.fromJson(response.toString(), Inventory.class);
我用@SerializedName:
装饰了我的Inventory类public class Inventory {
@SerializedName("InventoryId")
private UUID InventoryId;
@SerializedName("Title")
private String Title;
...
}
所以这种反序列化很容易。
现在,我想更新此Inventory对象,并将其发送回服务器。 Volley需要一个JSONObject。所以我的问题是:如何将Inventory对象转换为JSONObject?
答案 0 :(得分:2)
简而言之,你必须这样做:
DEBUG
INFO
WARNING
ERROR
CRITICAL
我没有注意到你并不是单独使用谷歌gson,所以这里是更新的答案,取自另一个similar问题:
JsonObject jsonObject = gson.toJsonTree(myUpdatedInventory, Inventory.class).getAsJsonObject();