2010-11-22 3 views
0

Umwandlung AM unten Störung zu erhalten, während json Reaktion in NSDictionary in json Parsing Umwandlung ...Fehler in json Parsing während Reaktion in NSDictionary

ERROR: -JSONValue fehlgeschlagen. Fehlertrace ist: ( Fehler Domain = org.brautaset.JSON.ErrorDomain-Code = 3 = Userinfo 0x4d38270 "Unerkannte Hauptperson" )

jede Anregung ...

+1

Wir müssten die Daten sehen, die Sie dekodieren möchten. – grahamparks

+1

Wenn Sie das JSON-Objekt erstellen, das Ihre Anwendung dann analysiert, überprüfen Sie, ob Sie das JSON-Objekt ordnungsgemäß erstellen. Auch, wie Graham sagt, fügen Sie die Daten – Bourne

+0

+100000 zum Veröffentlichen der Daten ein. – JeremyP

Antwort

0

eigentlich nicht erschaffe das JSON-Objekt durch mit api bin es wieder ..

jetzt habe ich den Grund für diesen Fehler gefunden. gebe kein gültiges json-Objekt, um in nsdictionary zu konvertieren ... Um ein gültiges json-Objekt zu erhalten, müssen wir eine gültige URL erzeugen, um das json-Objekt abzurufen.

Dank für Ihre Anregung ...

1

Sie haben wahrscheinlich das gleiche Problem wie ich ... Die Rückkehr Daten in JSONP Format anstelle von reinem JSON ist. Mit anderen Worten werden Sie mit so etwas wie

functionCall({"Name": "Foo", "Id" : 1234, "Rank": 7}); 

statt nur

{"Name": "Foo", "Id" : 1234, "Rank": 7} 

Weitere Daten zu tun haben here

Sie werden die Funktion und die Klammern aus dem String Streifen müssen, bevor es das Parsen durch das JSON-Framework. Sie können mit dem folgenden regulären Ausdruck, zu tun (Abstand, um es leichter zu machen, um zu sehen):

\w+ \s? \((\{ .* \}) \} 

Und das Skript zu schreiben, das ist:

NSError *error = NULL; 
NSRegularExpression *regex = [NSRegularExpression 
    regularExpressionWithPattern:@"\\w+\\s?\\((\\{.*\\})\\)" 
         options:NSRegularExpressionCaseInsensitive 
          error:&error]; 

[regex replaceMatchesInString:resultString 
         options:0 
         range:NSMakeRange(0, [resultString length]) 
       withTemplate:@"$1"]; 

NSLog(@"resultString = %@", resultString); 
NSLog(@"converted = %@", [resultString JSONValue]); 

wo resultString die Antwort von der URL ist Anfrage ... Es muss als NSMutableString gespeichert werden, damit die Regex sie aktualisieren kann.