2013-05-02 35 views
8

Ho una risposta JSON nel formato seguente.Json: come rimuovere correttamente i caratteri di escape con json.net

"[{\\\"JobID\\\":\\\"1\\\",\\\"BillGenerationDate\\\":\\\"4/29/2013 2:53:34 PM\\\",\\\"BillID\\\":\\\"115743\\\",\\\"BillNo\\\":\\\"115743\\\",\\\"CustomerID\\\":\\\"4041705\\\",\\\"PayStatus\\\":\\\"0\\\",\\\"PaymentRequiredStatus\\\":\\\"True\\\",\\\"ProductName\\\":\\\"Epic FBO test\\\",\\\"Description\\\":\\\"Epic Automation 2\\\\r\\\\n\\\",\\\"ProductType\\\":\\\"eBill \\\",\\\"DueType\\\":\\\"-1\\\",\\\"DueDate\\\":\\\"2013-03-15\\\",\\\"Amount\\\":\\\"63.70\\\",\\\"Cost\\\":\\\"\\\"}, 
{\\\"JobID\\\":\\\"9\\\",\\\"BillGenerationDate\\\":\\\"5/2/2013 10:21:39 AM\\\",\\\"BillID\\\":\\\"115743\\\",\\\"BillNo\\\":\\\"115743\\\",\\\"CustomerID\\\":\\\"4041705\\\",\\\"PayStatus\\\":\\\"0\\\",\\\"PaymentRequiredStatus\\\":\\\"True\\\",\\\"ProductName\\\":\\\"FBO Test Product\\\",\\\"Description\\\":\\\"FBO Product Test\\\",\\\"ProductType\\\":\\\"eBill \\\",\\\"DueType\\\":\\\"-1\\\",\\\"DueDate\\\":\\\"2013-05-01\\\",\\\"Amount\\\":\\\"150.70\\\",\\\"Cost\\\":\\\"\\\"}] 

credo json.net gestisce i caratteri di escape e ho usato il codice sottostante per deserializzare a una raccolta dizionario.

var billList = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(contentCorrected); 

Ma questo JSON parsing getta eccezione "non valido carattere identificatore di proprietà:. Path '[0]', la linea 1, posizione 2." Potremmo risolvere questo manipolando la stringa di risposta json?

risposta

15

Prova string contentCorrected = contentCorrected.Replace(@"\", ""); prima del processo di deserializzazione.

+0

Grazie Bijoy .... Il suo funzionamento ..... Grazie –

+1

Dovrebbe essere come 'contentCorrected = contentCorrected.Replace (@ "\" "" , @ "" "") ' – msa7

+0

o ' contentCorrected = contentCorrected.Replace (@ "\", string.Empty) ' –

0
  1. Rimuovere tutto il carattere "\" prima di deselezionarlo. Usa la funzione di sostituzione.

    yourJsonString.Replace ("\\\\\", "");

  2. La stringa Json è incompleta o non sembra essere di tipo List<Dictionary<string, string>>". Correggere il tipo che si desidera convertire il jSON. Ho modificato il tuo giudizio un po 'come segue e ha funzionato.

    newJson = "{\" serie \ ":" + yourJsonString + "}"

-1

Per me il codice qui sotto funziona

string contentCorrected = contentCorrected.Replace(**@"\""", ""**); 
0

Il problema si verifica quando le doppie virgolette validi sono utilizzati all'interno la risposta. La rimozione e/o la sostituzione non risolveranno questo in tutti i casi. Mi frustrato troppo finché non ho trovato una soluzione semplice:

var billList = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(@contentCorrected); 
Problemi correlati