none
c# Json está vindo com \ na separação dos resultados RRS feed

  • 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
    sábado, 14 de abril de 2018 16:06

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

    sábado, 14 de abril de 2018 18:14
  • 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'

    domingo, 15 de abril de 2018 15:34