Ich habe folgende Daten gespeichert als NSString
:
{
Key = ID;
Value = {
Content = 268;
Type = Text;
};
},
{
Key = ContractTemplateId;
Value = {
Content = 65;
Type = Text;
};
},
Ich möchte diese Daten in Daten konvertieren, NSDictionary
die die Schlüsselwertpaare enthalten.
Ich versuche zuerst, das NSString
in ein JSON- Objekt wie folgt zu konvertieren :
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
Wenn ich jedoch versuche:
NSString * test = [json objectForKey:@"ID"];
NSLog(@"TEST IS %@", test);
Ich erhalte den Wert als NULL
.
Kann jemand vorschlagen, was das Problem ist?
objective-c
xcode
json
nsstring
nsdictionary
GuybrushThreepwood
quelle
quelle
Antworten:
Ich glaube, Sie interpretieren das JSON-Format für Schlüsselwerte falsch. Sie sollten Ihre Zeichenfolge als speichern
NSString *jsonString = @"{\"ID\":{\"Content\":268,\"type\":\"text\"},\"ContractTemplateID\":{\"Content\":65,\"type\":\"text\"}}"; NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
Wenn Sie nun der NSLog-Anweisung folgen
NSLog(@"%@",[json objectForKey:@"ID"]);
Ergebnis wäre ein anderes NSDictionary.
{ Content = 268; type = text; }
Ich hoffe, dies hilft, ein klares Verständnis zu bekommen.
quelle
Ich denke, Sie erhalten das Array von der Antwort, also müssen Sie dem Array eine Antwort zuweisen.
quelle
Verwenden Sie diesen Code, wobei str Ihre JSON-Zeichenfolge ist:
NSError *err = nil; NSArray *arr = [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&err]; // access the dictionaries NSMutableDictionary *dict = arr[0]; for (NSMutableDictionary *dictionary in arr) { // do something using dictionary }
quelle
Swift 3:
if let jsonString = styleDictionary as? String { let objectData = jsonString.data(using: String.Encoding.utf8) do { let json = try JSONSerialization.jsonObject(with: objectData!, options: JSONSerialization.ReadingOptions.mutableContainers) print(String(describing: json)) } catch { // Handle error print(error) } }
quelle
Verwenden Sie den folgenden Code, um das Antwortobjekt aus dem
AFHTTPSessionManager
Fehlerblock abzurufen. Anschließend können Sie den generischen Typ in den erforderlichen Datentyp konvertieren:id responseObject = [NSJSONSerialization JSONObjectWithData:(NSData *)error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] options:0 error:nil];
quelle