2012-02-17 32 views
22

Estoy intentando serializar un objeto C# a JSON utilizando la biblioteca JSON.net. El problema que estoy teniendo es que la cadena que se está creando tiene & en ella.JSON.net Serializar objeto C# a JSON Problema

A continuación se muestra la cadena devuelta a través de JsonConvert.SerializeObject:

{ 
    "ComId": "AAAiB+AAHAALOaFAAL", 
    "CovId": "AAABC9AAPAAAZYUAAI", 
    "EffectiveDate": "\\/Date(1329368400000-0500)\\/", 
    "ExpirationDate": "\\/Date(1360990800000-0500)\\/", 
    "State": "TX", 
    "DeductibleAmount": 500.0, 
    "DeductibleType": "PD" 
} 

Ejecución de la cadena a través de JSONLint devuelve:

Parse error on line 1: 
{ "ComId": & 
-----^ 
Expecting 'STRING', '}' 

A continuación se muestra el objeto que estoy tratando de serializar JSON en:

public class CommonInfoModel 
{ 
    public virtual string ComId { get; set; } 
    public virtual string CovId { get; set; } 

    [Display(Name = "Effective Date")] 
    public virtual DateTime EffectiveDate { get; set; } 

    [Display(Name = "Expiration Date")] 
    public virtual DateTime ExpirationDate { get; set; } 

    [Display(Name = "State")] 
    public virtual string State { get; set; } 

    [Display(Name = "Deductible Amount")] 
    public virtual decimal DeductibleAmount { get; set; } 

    [Display(Name = "Deductible Type")] 
    public virtual string DeductibleType { get; set; } 
} 

¿Estoy haciendo algo mal? ¡He buscado y parece que otros que usan el método obtienen cadenas más limpias! ¡Gracias por su tiempo por adelantado!

+0

¿Por qué no hacer una sustitución de ese " de "y luego analizarlo – jcvegan

+1

¿Cómo estás usando JSON ¿Está de devolverlos de una acción de controlador Ha tratado' retorno JSON (modelo);?? ' ? – jrummell

+0

Esto es '{" ComId ": null," CovId ": nulo," EffectiveDate ":" \/Date (-62135596800000 + 0200) \/"," ExpirationDate ":" \/Date (-62135596800000 + 0200) \/"," Estado ": nulo," DeductibleAmount ": 0.0," DeductibleType ": null}' lo que obtengo cuando ejecuto ** 'JsonConvert.SerializeObject (nuevo CommonInfoModel())' **. Debe estar haciendo algo con su cadena después de la serialización –

Respuesta

74

Su cadena json está siendo codificada en HTML. Dado que está renderizando el json en su vista, puede usar el ayudante @Html.Raw() para evitar que se codifique.

var data = { json : "@Html.Raw(JsonConvert.SerializeObject(Model))" }; 
+0

¡Gracias, al usar Html.Raw pude limpiar la cadena! – MetRay

+0

Buena respuesta. gracias. –

Cuestiones relacionadas