2013-05-02 8 views
8

Mam odpowiedź json w poniższym formacie.Json: jak prawidłowo usunąć znaki ucieczki z 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\\\":\\\"\\\"}] 

wierzę json.net obsługuje znaki ewakuacyjne i Użyłem poniższy kod deserializować go do słownika kolekcji.

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

Ale to json parsowania rzuca wyjątek "Nieprawidłowy identyfikator własność znaków. Path '[0]', wiersz 1, pozycja 2." Czy możemy rozwiązać ten problem, manipulując łańcuchem odpowiedzi JSON?

Odpowiedz

15

Spróbuj string contentCorrected = contentCorrected.Replace(@"\", ""); przed procesem deserializacji.

+0

Dzięki Bijoy .... jego pracy ..... Dzięki –

+1

To powinno być jak 'contentCorrected = contentCorrected.Replace (@ "\" "" , @ "" "") ' – msa7

+0

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

0
  1. Usuń wszystkie znaki "\" przed deserializacją. Użyj funkcji zamiany.

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

  2. Twój ciąg Json jest niekompletny lub nie wydaje się być typu List<Dictionary<string, string>>". Popraw typ, który chcesz konwertować json. Zmieniłem trochę twój json w następujący sposób i zadziałało.

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

-1

Dla mnie poniższy kod działa

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

Problem pojawia się, gdy ważne cytaty podwójne są używane w odpowiedzi. Usunięcie i/lub Zastąpienie nie rozwiąże problemu we wszystkich przypadkach. Jest sfrustrowany mnie zbyt aż znalazłem proste rozwiązanie:

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