¿Cómo puedo deserializar JSON en un Diccionario <cadena, cadena> simple en ASP.NET?

Resuelto richardtallent asked hace 15 años • 22 respuestas

Tengo una lista simple de clave/valor en JSON que se envía de regreso a ASP.NET mediante POST. Ejemplo:

{ "key1": "value1", "key2": "value2"}

NO ESTOY INTENTANDO DESERIALIZAR EN OBJETOS .NET DE TIPO FUERTE

Simplemente necesito un simple Dictionary(Of String, String) , o algún equivalente (tabla hash, Dictionary(Of String, Object), StringDictionary de la vieja escuela; diablos, una matriz 2-D de cadenas funcionaría para mí.

Puedo usar cualquier cosa disponible en ASP.NET 3.5, así como el popular Json.NET (que ya estoy usando para la serialización al cliente).

Aparentemente, ninguna de estas bibliotecas JSON tiene esta obvia capacidad lista para usar: están totalmente enfocadas en la deserialización basada en reflexión a través de contratos sólidos.

¿Algunas ideas?

Limitaciones:

  1. No quiero implementar mi propio analizador JSON
  2. Todavía no puedo usar ASP.NET 4.0
  3. Preferiría mantenerse alejado de la clase ASP.NET más antigua y obsoleta para JSON
richardtallent avatar Jul 30 '09 23:07 richardtallent
Aceptado

Json.NET hace esto...

string json = @"{""key1"":""value1"",""key2"":""value2""}";

var values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

Más ejemplos: Serialización de colecciones con Json.NET

James Newton-King avatar Jul 31 '2009 11:07 James Newton-King

Descubrí que .NET tiene una forma integrada de convertir la cadena JSON en un tipo Dictionary<String, Object>a través System.Web.Script.Serialization.JavaScriptSerializerdel System.Web.Extensionsensamblado 3.5. Utilice el método DeserializeObject(String).

Me topé con esto al hacer una publicación ajax (a través de jquery) de tipo de contenido 'aplicación/json' en un método de página .net estático y vi que el método (que tenía un solo parámetro de tipo Object) recibió mágicamente este Diccionario.

Crispy avatar Jan 29 '2010 01:01 Crispy

Sistema.Texto.Json

Esto ahora se puede hacer usando System.Text.Jsonel que está integrado en .NET Core 3.0 . Ahora es posible deserializar JSON sin utilizar bibliotecas de terceros.

var json = @"{""key1"":""value1"",""key2"":""value2""}";
var values = JsonSerializer.Deserialize<Dictionary<string, string>>(json);

También disponible en el paquete NuGet System.Text.Json si se utiliza .NET Standard o .NET Framework.


Asegúrese de leer y comprender:

  • https://github.com/dotnet/runtime/issues/30452
haldo avatar Oct 23 '2019 11:10 haldo

Para aquellos que buscan en Internet y se topan con esta publicación, escribí una publicación de blog sobre cómo usar la clase JavaScriptSerializer.

Leer más... http://procbits.com/2011/04/21/quick-json-serializationdeserialization-in-c/

Aquí hay un ejemplo:

var json = "{\"id\":\"13\", \"value\": true}";
var jss = new JavaScriptSerializer();
var table = jss.Deserialize<dynamic>(json);
Console.WriteLine(table["id"]);
Console.WriteLine(table["value"]);
JP Richardson avatar Apr 21 '2011 18:04 JP Richardson