Cara,
Não saco muito da parte WS em Java (então é tudo chute daqui para frente), mas uma coisa me pareceu estranha.
O parametro de seu WS é uma lista de lista de produtos (List<List<Produtos>>), enquanto seu JSON é um objeto com um array de lista de produtos.
A classe que se adequaria a seu JSON é mais ou menos a seguinte:
public ListaProdutos {
List<Produto> lista;
}
E então no WS:
List<Produtos> ComparaLista(ListaProdutos lista)
O que você pode fazer para evitar essa redudânica é enviar direto o array (JSONArray) ao invés do objeto (JSONObject).
É melhor usar GSON.
Em 14 de junho de 2015 23:30, Alex Artur Hummes <alexhummes@gmail.com> escreveu:
--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: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.svcpublic List<BUS.Produtos> ComparaLista(List<List<Produtos>> lista){return ProdutosBus.ComparaLista(lista);}ProdutosBuspublic 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 jsonpublic 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.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.






0 comentários:
Postar um comentário