Principales respuestas
Error al Convertir a Clase

Pregunta
-
hola
Estoy construyendo una Web Api en c# Donde en una de las operaciones devuelvo un string que serializo desde un DataTable
de esta forma
public string GetCliente(string id) { DataTable dt = new DataTable(); if (dt != null) { dt = Engine.FuncionesDb.TableData(id); string jsonCliente = JsonConvert.SerializeObject(dt); return jsonCliente; } else { return NotFound(); } }
Cuando hago la peticion desde mi App cliente obtengo la cadena perfectamente ...Pero al tratar de deserializar la cadena a la clase Cliente ...de esta forma...me devuelve el siguiente error :
Newtonsoft.Json.JsonSerializationException: 'Error converting value
"[{"Numero":2,"Id":"edeadb0d8cb8-4be1-8d98-883a007f9a10",
"Nombre":"gdfgdf","Edad":22,"Telefono":"453345345","Saldo":64565.878,
"FechaCreacion":"2018-08-06T18:26:26.73","FechaCreacionUtc":"2018-08-06T22:26:26.73",
"FechaModificacion":"2018-08-06T18:26:26.73","FechaModificacionUtc":"2018-08-06T22:26:26.73",
"Proceso":0,"Usuario":"EfrainMejiasC"}]"
to type 'ApiRestConsumer.Form1+Cliente'. Path '', line 1, position 385.'
private Cliente ClientGetRequest(string RequestURI) { Cliente jsonCliente = new Cliente(); HttpClient client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:50445/"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = client.GetAsync(RequestURI).Result; if (response.IsSuccessStatusCode) { string resultado = response.Content.ReadAsStringAsync().Result; jsonCliente = JsonConvert.DeserializeObject<Cliente>(resultado);//AQUI el ERROR } else { string resultado = response.Content.ReadAsStringAsync().Result; jsonCliente = JsonConvert.DeserializeObject<Cliente>(resultado); } return jsonCliente; }
mi clase Cliente
public class Cliente { public int Numero { get; set; } public string Id { get; set; } public string Nombre { get; set; } public int Edad { get; set; } public string Telefono { get; set; } public double Saldo { get; set; } public DateTime FechaCreacion { get; set; } public DateTime FechaCreacionUtc { get; set; } public DateTime FechaModificacion { get; set; } public DateTime FechaModificacionUtc { get; set; } public int Proceso { get; set; } public string Usuario { get; set; } }
EFRAIN MEJIAS C VALENCIA - VENEZUELA
- Editado Efrain Mejias Castillo martes, 7 de agosto de 2018 0:16
Respuestas
-
Deleted
- Propuesto como respuesta Pablo RubioModerator martes, 7 de agosto de 2018 17:35
- Marcado como respuesta Efrain Mejias Castillo martes, 7 de agosto de 2018 17:50
-
hola
>>devuelvo un string que serializo desde un DataTable
Pero estas mezclando peras con bananas, un datatable no es una clase cliente, se supome que serializas y deserializas la misma estructura
Deberias obtener una lista de clientes con la consulta a la db y no un datatable, eso es lo que tienes que serializar y devolver, para luego poer deserializar
Por otro lado si analizas el json veras [], por lo que es un array de items, la deserializacion tambien debe ser una lista
JsonConvert.DeserializeObject<List<Cliente>>()
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Sergio ParraModerator martes, 7 de agosto de 2018 6:19
- Marcado como respuesta Efrain Mejias Castillo jueves, 9 de agosto de 2018 16:11
Todas las respuestas
-
Deleted
- Propuesto como respuesta Pablo RubioModerator martes, 7 de agosto de 2018 17:35
- Marcado como respuesta Efrain Mejias Castillo martes, 7 de agosto de 2018 17:50
-
hola
lo primero que noto es que si haces esto
DataTable dt = new DataTable();
NUNCA vas a obtener un null en la variable dt, por lo que este if
if (dt != null)
no tiene ningun sentido
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator martes, 7 de agosto de 2018 17:35
-
hola
>>devuelvo un string que serializo desde un DataTable
Pero estas mezclando peras con bananas, un datatable no es una clase cliente, se supome que serializas y deserializas la misma estructura
Deberias obtener una lista de clientes con la consulta a la db y no un datatable, eso es lo que tienes que serializar y devolver, para luego poer deserializar
Por otro lado si analizas el json veras [], por lo que es un array de items, la deserializacion tambien debe ser una lista
JsonConvert.DeserializeObject<List<Cliente>>()
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Sergio ParraModerator martes, 7 de agosto de 2018 6:19
- Marcado como respuesta Efrain Mejias Castillo jueves, 9 de agosto de 2018 16:11