Hola a tod@s,
En el dia de hoy, hoy voy a traer un pequeño codigo para deserializar una cadena con formato JSON en una clase, como vereis es muy sencillo.
Lo primero de todo, tenemos instalar un paquete llamado Newtonsoft, sino sabes como hacerlo puedes verlo aqui, tras instalar el paquete NuGet hay que importar los espacios de nombre:
1 |
Imports Newtonsoft.Json |
Necesitaremos disponer de una clase con la estructura correcta, hay que tener en cuenta que los nombres de las variables deben de coincidir con las de la cadena JSON, ya que sino no hara nada.
1 2 3 4 |
Public Class Persona Public Nombre As String Public Apellidos As String End Class |
Por otro lado, generamos una clase en la que pondremos el nombre que esta dentro del JSON, que nos indica que es un conjunto de Personas, lo mismo que antes debe de tener el nombre exacto para que parchee las propiedades.
1 2 3 |
Public Class Respuesta Public Personas() As Persona End Class |
La cadena de JSON que nos llega es la siguiente, estaria almacenada en una variable llamada por ejemplo jsonRetorno.
1 2 3 4 5 6 7 8 9 10 11 |
{ "Personas": [{ "Nombre": "Cesar", "Apellidos": "Perez" }, { "Nombre": "Manolo", "Apellidos": "Garcia" } ] } |
Como veis, la estructura es la misma que la clase, pero podria tener algun campo que en la clase no este, y lo que hara es omitirlo. La linea de codigo necesaria para poder deserializar es la siguiente:
1 2 |
Dim oPersona As New Persona oPersona = JsonConvert.DeserializeObject(Of Persona)(jsonRetorno) |
Dentro del objeto oPersona, tendremos dos clases que coinciden con las del JSON.
Espero que os valga, tambien podeis ver como serializar una clase en una cadena Json, en este post.
Saludos,