2011-08-15 18 views
8

Mój ciąg JSON wygląda tak. Zwróć uwagę, że zawiera znaki specjalne.Błąd podczas używania Newtonsoft.Json do parsowania łańcucha Json

string json = "\"{\\\"Status\\\":true,\\\"ID\\\":24501}\""; 

Kiedy użyć metody Parse jak poniżej biegnę do błędu nizej:

JObject o = JObject.Parse(json); 

Błąd odczytu JObject z JsonReader. Bieżący obiekt JsonReader nie jest obiektem: String

Jak pozbyć się tego błędu lub czy istnieje jakakolwiek inna metoda do analizy mojego łańcucha JSON i pobrania wartości?

+0

żadnej odpowiedzi od tego, m stoi ten sam prob – 1Mayur

Odpowiedz

4

Usuń pierwsze i ostatnie cytaty:

string json = "{\"Status\":true,\"ID\":24501}"; 

Zobacz formatu JSON here.

2

Wygląda na to, że obiekt jest podwójnie zakodowany. Spróbuj:

string json = "{\"Status\":true,\"ID\":24501}"; 
+4

To ciąg json jest to, co mam z API. Jak usunąć znaki escape? \ – SVI

+2

@SVI: Spóźniam się na imprezę, ale jeśli ktoś tego potrzebuje, po prostu zamień je używając czegoś w stylu 'json.Replace (" \\\\ "," \\ ")' – SolarBear

0

tu format powinien być mniej więcej tak:

string jsonNew = @"{'Status': True,'ID': 24501 }"; 
1

Trzeba coś takiego

json = json.Replace(@"\", string.Empty).Trim(new char[]{'\"'}) 
0

Jak SolarBear mówi w swoim komentarzu, że problem jest dwukrotnie ucieczki .

Aby uzyskać właściwy format, tak:

string json = "{\"Status\":true,\"ID\":24501}"; 

zrobić coś takiego:

json = json.Replace("\\\\", "\\"); 
0

Gdyby podobny problem dzisiaj. Moje rozwiązanie to jest zawarte w tej metodzie wydłużania (używając c#):

public static class StringExtensions 
{ 
    public static string RemoveDoubleEncoding(this string text) 
    { 
     if(string.IsNullOrEmpty(text)) 
      return string.Empty; 
     var result = text.TrimStart('\"').TrimEnd('\"'); 
     result = result.Replace(@"\", string.Empty); 
     return result; 
    } 
} 
Powiązane problemy