Create Jsonarray with objects?

Asked

Viewed 816 times

1

I have 2 classes: Venda and ItemVenda. I want to create a Jsonarray with all my sales and your items. I’m trying to use Jsonobject with Jsonarray to create this but I’m not getting it done.

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;
    }

2 answers

1


I think the correct thing would be for the Itemvenda array to be 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;
}
  • worked very well. On this line jsonObjectVenda.put(jsonArrayItems); changed by adding the key Itemvenda being like this: jsonObjectVenda.put("ItemVenda",jsonArrayItems);. Thank you

0

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

  • i already do in the method I catch the return. I created the method this way pq I will use it to send json objects to my webservice.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.