Inquiridor
c# Json está vindo com \ na separação dos resultados

Pergunta
-
Olá alguém pode me dar um help?
Sou novo em web e estou tentando desenvolver um wcf onde o retorno será um json.
tenho o IServiceRestfull
public interface IServiceRestfull { [OperationContract] string ConsultaIAcesso(string NomeUsuario, string variavel); }
tenho o ServiceRestful
public class ServiceRestful : IServiceRestfull { [WebInvoke(Method = "GET", UriTemplate = "/IAcesso/{NomeUsuario}/{variavel}", ResponseFormat = WebMessageFormat.Json)] public string ConsultaIAcesso(string NomeUsuario, string variavel) { acesso acess = new acesso(); var json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(acess.acessoMetodo(NomeUsuario, variavel)); return json; } }
tenho a classe acesso
public class acesso{
public AcessoUsuario acessoMetodo(string NomeUsuario, string variavel) { DataTable Dtconsulta = new DataTable(); Sql = " SELECT NomeUsuario, TelefoneUsuario, SenhaUsuario, EmailUsuario, iif(IdUsuario is null,0, IdUsuario) LoginUsuario"; Sql += " FROM Cadastro.DTUsuario"; Sql += " WHERE NomeUsuario = '" + NomeUsuario.ToUpper() + "' AND SenhaUsuario = '123456'"; try { //cria um datatable define a conexão e abre e executa um comando SqlCommand cmd = new SqlCommand(Sql, conn); conn.Open(); adapter = new SqlDataAdapter(cmd); adapter.Fill(Dtconsulta); AcessoUsuario acessoUsuario = null; if (Dtconsulta.Rows.Count > 0) { acessoUsuario = new AcessoUsuario(Dtconsulta.Rows[0]["NomeUsuario"].ToString(), Dtconsulta.Rows[0]["TelefoneUsuario"].ToString(), Dtconsulta.Rows[0]["SenhaUsuario"].ToString(), Dtconsulta.Rows[0]["EmailUsuario"].ToString(), Dtconsulta.Rows[0]["LoginUsuario"].ToString()); } return acessoUsuario; } catch (Exception ex) { throw ex; } finally { conn.Close(); adapter.Dispose(); } }
}
O retorno na pagina da web é esse:
{\"NomeUsuario\":\"TESTE\",\"TelefoneUsuario\":\"1111111111\",\"SenhaUsuario\":\"1234567\",\"EmailUsuario\":\"blablabla@HOTMAIL.COM\",\"LoginUsuario\":\"25\"}
Minha pergunta esse retorno em Json está errado? Eu vejo em outros retornos que não existe essa "\" separando os itens, é possível tirar?
- Editado waspnator sábado, 14 de abril de 2018 16:12
Todas as Respostas
-
Não está errado, como os dados estão serializados eles retornam com (\) para separar cada atributo e seu respectivo valor , para retirar será criar uma classe com os atributos iguais a da sua tabela de dados, Deserializar os dados e retornar os dados dessa classe.
veja Aqui para mais Informações
https://www.codeproject.com/Articles/272335/JSON-Serialization-and-Deserialization-in-ASP-NET
-
Não está errado, como os dados estão serializados eles retornam com (\) para separar cada atributo e seu respectivo valor , para retirar será criar uma classe com os atributos iguais a da sua tabela de dados, Deserializar os dados e retornar os dados dessa classe.
veja Aqui para mais Informações
https://www.codeproject.com/Articles/272335/JSON-Serialization-and-Deserialization-in-ASP-NET
Obrigado Jamite, pela resposta.
Não sei se o que fiz está correto, mas ainda não obtive sucesso, a partir dos dados no datatable
[DataContract] public class Pessoa { [DataMember] public string Nome { get; set; } [DataMember] public string TelefoneUsuario { get; set; } [DataMember] public string SenhaUsuario { get; set; } [DataMember] public string EmailUsuario { get; set; } [DataMember] public string LoginUsuario { get; set; } }
if (dataTable.Rows.Count > 0) { Pessoa p = new Pessoa(); DataTableReader DtConsultaReader = dataTable.CreateDataReader(); while (DtConsultaReader.Read()) { p.Nome = DtConsultaReader["NomeUsuario"].ToString(); p.TelefoneUsuario = DtConsultaReader["TelefoneUsuario"].ToString(); p.SenhaUsuario = DtConsultaReader["SenhaUsuario"].ToString(); p.EmailUsuario = DtConsultaReader["EmailUsuario"].ToString(); p.LoginUsuario = DtConsultaReader["LoginUsuario"].ToString(); } DtConsultaReader.Close(); conn.Close(); var json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(p); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Pessoa)); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)); retorno = (Pessoa)ser.ReadObject(ms);
return retorno;
não estou sabendo como retornar, ao tentar retornar recebo o erro:
Cannot implicitly convert type 'teste15_04.Pessoa' to 'string'