将Java对象转换为JsonObject

时间:2018-03-29 17:51:02

标签: java json android-volley

我通过使用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?

1 个答案:

答案 0 :(得分:2)

简而言之,你必须这样做:

DEBUG
INFO
WARNING
ERROR
CRITICAL

我没有注意到你并不是单独使用谷歌gson,所以这里是更新的答案,取自另一个similar问题:

JsonObject jsonObject = gson.toJsonTree(myUpdatedInventory, Inventory.class).getAsJsonObject();