Create JSONArray with objects?

1

I have 2 classes: Venda and ItemVenda . I want to create a JSONArray with all my sales and its items. I'm trying to use the JSONObject with JSONArray to create this but I can not do it.

For example: Venda:{id:1, data:2015-09-28, cliente_id:1}, ItemVenda:[{produto:5, quantidade:10, valorUnitario:5.00, totalItem:50.00}, {produto:21, quantidade:1, valorUnitario:5.00, totalItem:5.00}], Venda:{id:33, data:2015-08-28, cliente_id:15}, ItemVenda:[{produto:42, quantidade:1, valorUnitario:10.00, totalItem:10.00}, {produto:61, quantidade:2, valorUnitario:25.00, totalItem:50.00}]

In the example I have 2 sales with their respective items. How can I do this?

I'm trying like this.

private JSONObject getJSONObjectToSend(){
        JSONObject jsonVendas = new JSONObject();
        JSONArray jsonArrayVenda = new JSONArray();
        JSONArray jsonArrayItems = new JSONArray();

        VendaPersist vp = new VendaPersist(getActivity());
        //lista de vendas
        List<Venda> lista = vp.getAllVendasFinalizadas();
        try {
            if(lista.size() > 0){
                for(Venda v : lista){
                    JSONObject jsonObjectVenda = new JSONObject();
                    //venda
                    jsonObjectVenda.put("dataVenda", new SimpleDateFormat("yyyy-MM-dd").format(v.getDataVenda()));
                    jsonObjectVenda.put("cliente", v.getCliente().getId_ws());
                    jsonObjectVenda.put("usuario", v.getIdUsuario());
                    jsonArrayVenda.put(jsonObjectVenda);

                    //itens venda
                    for(ItemVenda iv : v.getListaItems()){
                        JSONObject jsonObjectIV = new JSONObject();
                        jsonObjectIV.put("produto", iv.getProduto().getId_ws());
                        jsonObjectIV.put("quantidade", iv.getQuantidade());
                        jsonObjectIV.put("valorUnitario", iv.getValorUnitario());
                        jsonObjectIV.put("valorTotal", iv.getTotalItem());
                        jsonArrayItems.put(jsonObjectIV);

                    }

                    jsonArrayVenda.put(jsonArrayItems);
                    jsonVendas.put("Venda", jsonArrayVenda);
                }
            }
        } catch (JSONException e) {
            Log.e(TAG, e.getLocalizedMessage());
        }
        return jsonVendas;
    }
    
asked by anonymous 28.09.2015 / 21:57

2 answers

1

I think the correct one would be the ItemVend array being inside the Sale object

Venda:[{id:1, data:2015-09-28, cliente_id:1, ItemVenda:[{produto:5, quantidade:10, valorUnitario:5.00, totalItem:50.00}, {produto:21, quantidade:1, valorUnitario:5.00, totalItem:5.00}]}, {id:33, data:2015-08-28, cliente_id:15, ItemVenda:[{produto:42, quantidade:1, valorUnitario:10.00, totalItem:10.00}, {produto:61, quantidade:2, valorUnitario:25.00, totalItem:50.00}]}]

Code:

private JSONObject getJSONObjectToSend(){
    JSONObject jsonVendas = new JSONObject();
    JSONArray jsonArrayVenda = new JSONArray();

    VendaPersist vp = new VendaPersist(getActivity());
    //lista de vendas
    List<Venda> lista = vp.getAllVendasFinalizadas();
    try {
        if(lista.size() > 0){
            for(Venda v : lista){
                JSONObject jsonObjectVenda = new JSONObject();
                //venda
                jsonObjectVenda.put("dataVenda", new SimpleDateFormat("yyyy-MM-dd").format(v.getDataVenda()));
                jsonObjectVenda.put("cliente", v.getCliente().getId_ws());
                jsonObjectVenda.put("usuario", v.getIdUsuario());

                //itens venda
                JSONArray jsonArrayItems = new JSONArray();
                for(ItemVenda iv : v.getListaItems()){
                    JSONObject jsonObjectIV = new JSONObject();
                    jsonObjectIV.put("produto", iv.getProduto().getId_ws());
                    jsonObjectIV.put("quantidade", iv.getQuantidade());
                    jsonObjectIV.put("valorUnitario", iv.getValorUnitario());
                    jsonObjectIV.put("valorTotal", iv.getTotalItem());
                    jsonArrayItems.put(jsonObjectIV);

                }
                jsonObjectVenda.put(jsonArrayItems);
                jsonArrayVenda.put(jsonObjectVenda);
            }
            jsonVendas.put("Venda", jsonArrayVenda);
        }
    } catch (JSONException e) {
        Log.e(TAG, e.getLocalizedMessage());
    }
    return jsonVendas;
}
    
28.09.2015 / 22:57
0

Friend, change the return of your method to STRING and in return jsonVendas; do the following return jsonVendas.toString();

    
28.09.2015 / 22:25