【问题标题】:how to convert List of object to jsonObject?如何将对象列表转换为 jsonObject?
【发布时间】:2017-12-27 01:55:13
【问题描述】:

如何将对象列表转换为jsonObject?

我正在将 Pojo 类列表转换为 jsonObject 。我将整个列表转换为 jsonArray,但是如何在数组范围之外添加其他字段?

            List<Order> items = new ArrayList<>();
            if (checkOutList != null) {
                for (Category.Items i1 : checkOutList) {
                    Order order = new Order();
                    order.setC_id(i1.getCid());
                    order.setItem_id(i1.getItem_id());
                    order.setQuantity(i1.getCount());
                    items.add(order);
                }
                Order order = new Order();
                order.setOd_total_cost(cardValue.getText().toString().trim());
                order.setR_id(checkOutList.get(0).getRid());
                order.setU_id("5");
                items.add(order);

                Gson gson = new GsonBuilder().create();
                JsonArray myCustomArray = gson.toJsonTree(items).getAsJsonArray();
                Log.e("order", myCustomArray.toString());
            }

上面的代码给了我输出:

[{"c_id":"3","item_id":"18","quantity":"5"},{"od_total_cost":"Card Value: $30.14","r_id":"1","u_id":"5"}]

我想要的输出

{"items":[{"quantity":"25","c_id":"70","item_id":"10"}],"r_id":"5","u_id":"70","od_total_cost":"20000"}

更新

JsonElement jsonObject=gson.toJsonTree(order);
Log.e("order", myCustomArray.toString()+jsonObject.toString());

上面添加的一行给了我下面的输出现在如何添加arrayname:items?并将整个输出添加为 json 对象

[{"c_id":"3","item_id":"18","quantity":"5"},{"c_id":"3","item_id":"17","quantity":"2"},{"c_id":"2","item_id":"91","quantity":"2"},{"c_id":"2","item_id":"9","quantity":"1"}]{"od_total_cost":"Card Value: $20.16","r_id":"1","u_id":"5"}

【问题讨论】:

  • 必须创建一个新的 POJO。

标签: android json list gson


【解决方案1】:

我认为其他方式也有效,但我也可以使用 POJO。

    class WholeObject{
        List<Order> items;
        String r_id;
        String u_id;
        String od_total_cost;

        //---getters and setters---

    }

    WholeObject wo = new WholeObject();
    wo.setR_id("5");
    wo.setU_id("70");
    wo.setOd_total_cost("20000");
    wo.setItems(yourOrders);

    Log.e("order",  new Gson().toJson( wo ) );

【讨论】:

    【解决方案2】:

    创建一个 Json 对象并添加如下值

     List<Order> items = new ArrayList<>();
            if (checkOutList != null) {
                for (Category.Items i1 : checkOutList) {
                    Order order = new Order();
                    order.setC_id(i1.getCid());
                    order.setItem_id(i1.getItem_id());
                    order.setQuantity(i1.getCount());
                    items.add(order);
                }
    
    
                Gson gson = new GsonBuilder().create();
                JsonArray myCustomArray = gson.toJsonTree(items).getAsJsonArray();
                Log.e("order", myCustomArray.toString());
    
    
    
    
         JsonObject ob= new JsonObject();
            ob.put("items",myCustomArray);
            ob.put("od_total_cost",cardValue.getText().toString().trim());
             ob.put("r_id",checkOutList.get(0).getRid());
             ob.put("u_id","5");
    
    
           Log.e("order", ob.toString());
    

    【讨论】:

    • 删除 / {"items":"[{\"c_id\":\"3\",\"item_id\":\"18\",\ "数量\":\"5\"},{\"c_id\":\"3\",\"item_id\":\"17\",\"数量\":\"3\"}, {\"c_id\":\"2\",\"item_id\":\"91\",\"数量\":\"2\"},{\"c_id\":\"2\" ,\"item_id\":\"9\",\"quantity\":\"1\"}]","od_total_cost":"卡价值:$20.18","r_id":"1","u_id" :"5"}
    • @beginner 你在把 mycustomarray.tostring 添加到 jsonobject 吗?
    【解决方案3】:

    请按照以下步骤操作。

    第 1 步: 在下面添加依赖并同步你的 gradle。

    compile 'com.google.code.gson:gson:2.6.2'
    

    第 2 步:

    在您的模型包中添加以下两个类。

    MyItem.java

    public class MyItem {
    
        @SerializedName("items")
        private List<Order> mItems;
        @SerializedName("od_total_cost")
        private String mOdTotalCost;
        @SerializedName("r_id")
        private String mRId;
        @SerializedName("u_id")
        private String mUId;
    
        public List<Order> getItems() {
            return mItems;
        }
    
        public void setItems(List<Order> items) {
            mItems = items;
        }
    
        public String getOdTotalCost() {
            return mOdTotalCost;
        }
    
        public void setOdTotalCost(String odTotalCost) {
            mOdTotalCost = odTotalCost;
        }
    
        public String getRId() {
            return mRId;
        }
    
        public void setRId(String rId) {
            mRId = rId;
        }
    
        public String getUId() {
            return mUId;
        }
    
        public void setUId(String uId) {
            mUId = uId;
        }
    }
    

    Order.java

    public class Order {
    
        @SerializedName("c_id")
        private String mCId;
        @SerializedName("item_id")
        private String mItemId;
        @SerializedName("quantity")
        private String mQuantity;
    
        public String getCId() {
            return mCId;
        }
    
        public void setCId(String cId) {
            mCId = cId;
        }
    
        public String getItemId() {
            return mItemId;
        }
    
        public void setItemId(String itemId) {
            mItemId = itemId;
        }
    
        public String getQuantity() {
            return mQuantity;
        }
    
        public void setQuantity(String quantity) {
            mQuantity = quantity;
        }
    }
    

    第 3 步:

    将下面的代码放在你想要将对象转换为字符串的类中。在这里,我只是在我的主要活动中做这个。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        Order order = new Order();
        order.setQuantity("25");
        order.setCId("70");
        order.setItemId("10");
        List<Order> orderList = new ArrayList<>();
        orderList.add(order);
        MyItem myItem = new MyItem();
        myItem.setItems(orderList);
        myItem.setRId("5");
        myItem.setUId("70");
        myItem.setOdTotalCost("2000");
    
        String str=covertObjectToString(myItem);
    
        Log.e("Tag","Reseponse String "+str);
    }
    
    private String covertObjectToString(Object object) {
        return new Gson().toJson(object);
    }
    

    完成。

    我希望你清楚我的逻辑。

    【讨论】:

    • 我已经添加了 gson,但我不得不做额外的 pojo 类来维护列表.. 谢谢你
    • 查看已接受的答案,因为它在你之前得到了回答......所以我只是投票给你
    【解决方案4】:

    使用:

    new Gson().toJson(yourObject)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-10
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多