Uso de ServiceStack.Text para deserializar una cadena json para objetar

Tengo una cadena JSON que se parece a:

"{\"Id\":\"fb1d17c7298c448cb7b91ab7041e9ff6\",\"Name\":\"John\",\"DateOfBirth\":\"\\/Date(317433600000-0000)\\/\"}" 

Estoy intentando deserializarlo para object (estoy implementando una interfaz de almacenamiento en caché)

El problema que estoy teniendo es cuando uso

 JsonSerializer.DeserializeFromString(jsonString); 

Está regresando como

“{Id: 6ed7a388b1ac4b528f565f4edf09ba2a, Nombre: John, DateOfBirth: / Date (317433600000-0000) /}”

¿Está bien?

No puedo afirmar nada … Tampoco puedo usar la palabra clave dinámica …

¿Hay una manera de devolver un objeto anónimo de la biblioteca ServiceStack.Text?

El uso de JS Utils en ServiceStack.Common es la forma preferida de deserializar Adhoc JSON con tipos desconocidos, ya que devolverá el objeto C # relevante según la carga útil de JSON, por ejemplo, deserializar un objeto con:

 var obj = JSON.parse("{\"Id\":\"..\"}"); 

Devolverá un Dictionary tipo suelto Dictionary que puede convertir para acceder a los contenidos dynamics del objeto JSON:

 if (obj is Dictionary dict) { var id = (string)dict["Id"]; } 

Pero si prefiere usar los serializadores JSON escritos con ServiceStack.Text , no puede deserializarse en un objeto, ya que no sabe en qué tipo deserializarse, por lo que lo deja como una cadena que es un objeto.

Considere usar las API dinámicas de ServiceStack para deserializar JSON arbitrario, por ejemplo:

 var json = @"{\"Id\":\"fb1d17c7298c448cb7b91ab7041e9ff6\", \"Name\":\"John\",\"DateOfBirth\":\"\\/Date(317433600000-0000)\\/\"}"; var obj = JsonObject.Parse(json); obj.Get("Id").ToString().Print(); obj.Get("Name").Print(); obj.Get("DateOfBirth").ToLongDateString().Print(); 

O analizar en una dinámica:

 dynamic dyn = DynamicJson.Deserialize(json); string id = dyn.Id; string name = dyn.Name; string dob = dyn.DateOfBirth; "DynamicJson: {0}, {1}, {2}".Print(id, name, dob); 

Otra opción es decirle a ServiceStack que convierta los tipos de objetos a un Diccionario, por ejemplo:

 JsConfig.ConvertObjectTypesIntoStringDictionary = true; var map = (Dictionary)json.FromJson(); map.PrintDump();