none
JsonArray RRS feed

  • Pergunta

  • Galera, preciso de mais uma ajudinha aqui. Estou precisando montar um JsonArray, pois preciso passar uma lista com todos os produtos escolhidos pelo usuário.

    Andei lendo sobre esta funcionalidade e creio que montei certo o json como segue abaixo:

    Obs: Este json abaixo estou passando da minha app android

                       JSONObject json = new JSONObject();
    JSONArray jArray = new JSONArray();
    HashMap<String, String> hm = null;
    int TamLista = arrayList.size();
                       for(int i=0;i<TamLista;i++){
      JSONObject aux =  new JSONObject();
          hm = arrayList.get(i);
          aux.put("prod_codbar",hm.get(TAG_CODBAR));
          aux.put("prod_desc", hm.get(TAG_PRODUTO));
          aux.put("prod_marca", hm.get(TAG_MARCA));
          aux.put("prod_marca",hm.get(TAG_MARCA));
          aux.put("prod_tipo",hm.get(TAG_TIPO));
          aux.put("prod_un",hm.get(TAG_UNIDADE));
          jArray.put(aux);
         } 

     json.put("Lista",jArray);

    O arquivo json fica da seguinte forma:
    {"Lista":[{"prod_codbar":"7896504305078","prod_desc":"LEITE LONGA VIDA 1L","prod_marca":"SANTA CLARA","prod_tipo":"","prod_un":"L"},{"prod_codbar":"7891042103070","prod_desc":"MARGARINA DORIANA 500G C\/SAL","prod_marca":"SEARA","prod_tipo":"","prod_un":"UN"}]}

    A dúvida que tenho é de como tratar este no webservice WCF, tentei o seguinte, mas sem sucesso.

    IService
    [OperationContract]
            [WebInvoke(UriTemplate = "JsonComparaLista",
                        RequestFormat = WebMessageFormat.Json,
                        ResponseFormat = WebMessageFormat.Json, Method = "POST")]
            List<Produtos> ComparaLista(List<List<Produtos>> lista);
    Service.svc
    public List<BUS.Produtos> ComparaLista(List<List<Produtos>> lista)
            {
                return ProdutosBus.ComparaLista(lista);
            }
    ProdutosBus
            public static List<Produtos> ComparaLista (List<List<Produtos>> lista)
            {
                List<Produtos> result = new List<Produtos>();
                Produtos produto = new Produtos();
                for (int i = 0; i < lista.Count; i++)
                {
                    List<Produtos> listprod = lista[i];
                    for (int n = 0; n < listprod.Count; n++)
                        produto.prod_desc = listprod[n].prod_desc;
                        result.Add(produto);               
                }
                return result;
            }
    Obs.: Este result é apenas um teste que estava fazendo, pois como podem ver estou apenas retornando o mesmo item da lista que recebi.
    Para Conhecimento segue também a classe Produtos, apenas para ver que uso os mesmo nomes dos campos na hora de montar o json
        public class Produtos
        {
            [DataMember]
            public string prod_codbar { get; set; }
            [DataMember]
            public string prod_desc { get; set; }
            [DataMember]
            public string prod_marca { get; set; }
            [DataMember]
            public string prod_un { get; set; }
            [DataMember]
            public string prod_tipo { get; set; }
            public Produtos(string prod_codbar, string prod_desc, string prod_marca, string prod_un, string prod_tipo)
            {
                this.prod_codbar = prod_codbar;
                this.prod_desc = prod_desc;
                this.prod_marca = prod_marca;
                this.prod_un = prod_un;
                this.prod_tipo = prod_tipo;
            }
            public Produtos()
            {
                this.prod_codbar = String.Empty;
                this.prod_desc = String.Empty;
                this.prod_marca = String.Empty;
                this.prod_un = String.Empty;
                this.prod_tipo = String.Empty;
            }
     
    Galera eu também ainda não consegui depurar no visual studio, estou colocando para depurar e no celular estou colocando na minha app o IP do servidor e a porta que o depurador me informou mas fica eternamente esperando a ação, não debuga.
    Então se conseguirem identificar o meu erro agradeço muito. Mais uma vez obrigado.
    segunda-feira, 15 de junho de 2015 02:35

Todas as Respostas