Categorías
Asp.net

No se puede deserializar el objeto JSON actual (por ejemplo, {«nombre»: «valor»})

Introducción:


Aquí aprenderemos cómo resolver el problema de no poder deserializar el objeto JSON actual (por ejemplo, {«nombre»: «valor»}) en el tipo ‘System.Collections.Generic.List`1[userdetails]’porque el tipo requiere una matriz JSON (p. ej. [1,2,3]) para deserializar correctamente. Generalmente, obtendremos este error cada vez que nuestro objeto JSON deserializado devuelva una lista de elementos de objeto, pero estamos tratando de mantener solo un elemento.


Descripción:


En artículos anteriores expliqué la serialización y deserialización de asp.net json en c #, vb.net, asp.net set custom error page inn web.config, secuencia de escape no reconocida en la ruta del archivo en c #, vb.net, no se puede convertir la cadena al tipo double no es válido en vb.net, jQuery muestra un mensaje de error en la respuesta de llamada ajax con un ejemplo, convierte la cadena json en un objeto json con un ejemplo y muchos más artículos relacionados con JSON, asp.net, mvc, c #, vb.net. Ahora explicaré cómo resolver el problema. No se puede deserializar el objeto JSON actual (por ejemplo, {«nombre»: «valor»}) en el tipo ‘System.Collections.Generic.List`1[userdetails]’porque el tipo requiere una matriz JSON (p. ej. [1,2,3]) para deserializar correctamente.

Recibimos el siguiente error en nuestra aplicación cada vez que intentamos deserializar la cadena JSON en asp.net usando newtonsoft json.



















En realidad, este problema se produjo siempre que nuestro método de deserialización JSON devuelve más de un elemento de la lista, pero estamos tratando de mantenerlo como un solo elemento, como se muestra a continuación.


Código C #


cuerda strmsg = «[{«userid»:1,»username»:»suresh»,»location»:»chennai»},{«userid»:2,»username»:»rohini»,»location»:»guntur»}]»;

Detalles de usuario usuario = JsonConvert.DeserializeObject <Detalles de usuario> (strmsg);

Código VB.NET


Oscuro strmsg Como Cuerda = «[{«»userid»»:1,»»username»»:»»suresh»»,»»location»»:»»chennai»»},{«»userid»»:2,»»username»»:»»rohini»»,»»location»»:»»guntur»»}]»

Oscuro usuario Como Detalles de usuario = JsonConvert.DeserializeObject (De Detalles de usuario) (strmsg)

Necesitamos cambiar Detalles de usuario usuario parámetro a var usuario como se muestra a continuación porque nuestro método de deserialización devuelve más de un elemento de lista.


Código C #


cuerda strmsg = «[{«userid»:1,»username»:»suresh»,»location»:»chennai»},{«userid»:2,»username»:»rohini»,»location»:»guntur»}]»;

var usuario = JsonConvert.DeserializeObject <Lista<Detalles de usuario>> (strmsg);

Código VB.NET


Oscuro strmsg Como Cuerda = «[{«»userid»»:1,»»username»»:»»suresh»»,»»location»»:»»chennai»»},{«»userid»»:2,»»username»»:»»rohini»»,»»location»»:»»guntur»»}]»

Oscuro usuario = JsonConvert.DeserializeObject (De Lista(De Detalles de usuario)) (strmsg)

Si desea un ejemplo completo para implementar la serialización y deserialización de datos JSON, cree una nueva aplicación web y abra su Default.aspx página y escriba el código como se muestra a continuación.



<html xmlns= «http://www.w3.org/1999/xhtml»>

<cabeza correr a= «servidor»>

<título>Serialización y deserialización JSON en Asp.Nettítulo>

cabeza>

<cuerpo>

<formulario identificación= «formulario1»
correr a= «servidor»>

<áspid:Botón IDENTIFICACIÓN= «btnSerialize»
correr a= «servidor»
Texto= «Serializar»
Al hacer clic= «btnSerialize_Click» />

<áspid:Botón IDENTIFICACIÓN= «btnDeserialize»
correr a= «servidor»
Texto= «Desserializar»
Al hacer clic= «btnDeserialize_Click» />

<div>

Datos serializados: <áspid:Etiqueta IDENTIFICACIÓN= «lblserial» correr a= «servidor» />

div>

<div>

Datos desserializados: <áspid:Etiqueta IDENTIFICACIÓN= «lbldeserial» correr a= «servidor» />

div>

formulario>

cuerpo>

html>


Ahora abra el código detrás del archivo y escriba el código como se muestra a continuación


Código C #


usando Sistema;

usando

System.Collections.Generic;

usando

Newtonsoft.Json;

público parcial clase _Defecto

: System.Web.UI.Página

{

protegido
vacío Page_Load (objeto remitente, EventArgs mi)

{

}

protegido
vacío btnSerialize_Click (objeto remitente, EventArgs mi)

{

Lista<Detalles de usuario> detalles = nuevo Lista<Detalles de usuario> ();

Detalles de usuario

usuario = nuevo Detalles de usuario();

detalles.Añadir (nuevo Detalles de usuario {userid = 1, username = «seguro», ubicación = «Chennai» });

detalles.Añadir (nuevo Detalles de usuario {userid = 2, username = «rohini», ubicación = «guntur» });

detalles.Añadir (nuevo Detalles de usuario {userid = 3, username = «praveen», ubicación = «bangalore» });

detalles.Añadir (nuevo Detalles de usuario {userid = 4, username = «sateesh», ubicación = «vizag» });

detalles.Añadir (nuevo Detalles de usuario {userid = 5, username = «madhav», ubicación = «nagpur» });

detalles.Añadir (nuevo Detalles de usuario {userid = 6, username = «cariño», ubicación = «nagpur» });

cuerda

strserialize = JsonConvert.SerializeObject (detalles);

lblserial.Text = strserialize;

}

protegido
vacío btnDeserialize_Click (objeto remitente, EventArgs mi)

{

cuerda strmsg = «[{«userid»:1,»username»:»suresh»,»location»:»chennai»},{«userid»:2,»username»:»rohini»,»location»:»guntur»}]»;

var usuario = JsonConvert.DeserializeObject <Lista<Detalles de usuario>> (strmsg);

}

}

clase Detalles de usuario

{

público En t userid { obtener; colocar; }

público cuerda nombre de usuario {
obtener; colocar; }

público cuerda localización {
obtener; colocar; }

}

Código VB.NET


Importaciones

Newtonsoft.Json

Parcial Clase VBCode

Hereda

System.Web.UI.Página

Protegido
Sub Page_Load (remitente Como Objeto, e Como EventArgs) Manejas Me.Carga

Fin Sub

Protegido
Sub btnSerialize_Click (remitente Como Objeto, e Como EventArgs)

Oscuro detalles Como Nuevo Lista(De Detalles de usuario) ()

Oscuro usuario Como Nuevo Detalles de usuario()

detalles.Añadir (Nuevo Detalles de usuario() Con {

.userid = 1,

.username = «seguro»,

.location = «Chennai»

})

detalles.Añadir (Nuevo Detalles de usuario() Con {

.userid = 2,

.username = «rohini»,

.location = «guntur»

})

detalles.Añadir (Nuevo Detalles de usuario() Con {

.userid = 3,

.username = «praveen»,

.location = «bangalore»

})

detalles.Añadir (Nuevo Detalles de usuario() Con {

.userid = 4,

.username = «sateesh»,

.location = «vizag»

})

detalles.Añadir (Nuevo Detalles de usuario() Con {

.userid = 5,

.username = «madhav»,

.location = «nagpur»

})

detalles.Añadir (Nuevo Detalles de usuario() Con {

.userid = 6,

.username = «cariño»,

.location = «nagpur»

})

Oscuro

strserializar Como Cuerda = JsonConvert.SerializeObject (detalles)

lblserial.Text = strserialize

Fin Sub

Protegido
Sub btnDeserialize_Click (remitente Como Objeto, e Como EventArgs)

Oscuro strmsg Como Cuerda = «[{«»userid»»:1,»»username»»:»»suresh»»,»»location»»:»»chennai»»},{«»userid»»:2,»»username»»:»»rohini»»,»»location»»:»»guntur»»}]»

Oscuro usuario = JsonConvert.DeserializeObject (De Lista(De Detalles de usuario)) (strmsg)

Fin Sub

Fin Clase

Público Clase Detalles de usuario

Público Propiedad ID de usuario () Como Entero

Obtener

Regreso m_userid

Fin Obtener

Colocar

m_userid = Valor

Fin Colocar

Fin Propiedad

Privado m_userid Como Entero

Público Propiedad nombre de usuario()
Como Cuerda

Obtener

Regreso m_username

Fin Obtener

Colocar

m_username = Valor

Fin Colocar

Fin Propiedad

Privado m_username
Como Cuerda

Público Propiedad localización()
Como Cuerda

Obtener

Regreso m_location

Fin Obtener

Colocar

m_location = Valor

Fin Colocar

Fin Propiedad

Privado m_location
Como Cuerda

Fin Clase

Si observa el código anterior, agregamos un espacio de nombres «Newtonsoft.JSON«Esto lo podemos obtener agregando una referencia usando Administrar paquetes Nuget. Para agregar una referencia, haga clic derecho en su aplicación a

Seleccione Administrar paquetes Nuget a

Ir Navegar Pestaña a

Buscar Newtonsoft a

De la lista seleccione Newtonsoft.Json
e instalarlo. Una vez que instalemos el componente que se mostrará como se muestra a continuación.




Manifestación


Ahora ejecute la aplicación para ver el resultado que será como se muestra a continuación. A continuación se muestra el resultado de Serializando Datos



A continuación se muestra el resultado de Desserializar los datos JSON.




Así es como podemos corregir el error de deserialización de JSON en nuestras aplicaciones.

.

  Asp.Net Obtener valores de sesión (acceso) en JavaScript (lado del cliente)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *