Hallo, ich habe 2 JSON
Strings wie folgt.JSON Zeichenfolge geben NULL nach Deserialisierung iOS
erstes Objekt
{
"LeaveEntryCode":0,
"RequestId":0,
"EmployeeCode":17186,
"LeaveYear":2016,
"LeaveTypeCode":1,
"LeaveReasonCode":0,
"BaseType":"ess",
"StartDate":"2016-10-24T00:00:00",
"EndDate":"2016-10-24T00:00:00",
"NoOfDays":1.0,
"StartDateSession":"full",
"EndDateSession":"full",
"PreApproved":false,
"ForDate":"1901-01-01T00:00:00",
"Remarks":"test from Android",
"CoveringPersonCode":0,
"AttachedDocument":"[{\"DocumentId\":354,\"DocumentName\":\"Screenshot_2016-04-15-00-35-11.png\",\"DocumentType\":\"image/png\"}]",
"RequestStatus":"P",
"Deleted":false,
"Status":false,
"CreatedBy":0,
"CreatedDate":"0001-01-01T00:00:00",
"UpdatedBy":0,
"UpdatedDate":"0001-01-01T00:00:00",
"DeletedBy":0,
"DeletedDate":"0001-01-01T00:00:00",
"ModuleId":2,
"ObjectId":20,
"StartDateString":"10/24/2016",
"EndDateString":"10/24/2016",
"LeaveDayList":[
"10/24/2016-FH,10/24/2016-SH"
],
"SystemLeaveTypeCode":"ANN",
"LeaveTypeName":"ANNUAL",
"Employee":null,
"LieuDayList":null,
"BaseLeaveType":"ANN",
"CoveringPersonName":null,
"LeaveReasonName":"test",
"DocumentSource":"LEAVE"
}
zweites Objekt
{
"LeaveEntryCode":0,
"RequestId":0,
"EmployeeCode":17227,
"LeaveYear":2016,
"LeaveTypeCode":1,
"LeaveReasonCode":3,
"BaseType":"ess",
"StartDate":"2016-10-26T00:00:00",
"EndDate":"2016-10-27T00:00:00",
"NoOfDays":2.0,
"StartDateSession":"full",
"EndDateSession":"half",
"PreApproved":false,
"ForDate":"1901-01-01T00:00:00",
"Remarks":"Test attachments in things to do",
"CoveringPersonCode":0,
"AttachedDocument":null,
"RequestStatus":"P",
"Deleted":false,
"Status":false,
"CreatedBy":0,
"CreatedDate":"0001-01-01T00:00:00",
"UpdatedBy":0,
"UpdatedDate":"0001-01-01T00:00:00",
"DeletedBy":0,
"DeletedDate":"0001-01-01T00:00:00",
"ModuleId":2,
"ObjectId":20,
"StartDateString":"10/26/2016",
"EndDateString":"10/27/2016",
"LeaveDayList":[
"10/26/2016-FH,10/26/2016-SH,10/27/2016-FH,10/27/2016-SH"
],
"SystemLeaveTypeCode":"ANN",
"LeaveTypeName":"ANNUAL",
"Employee":null,
"LieuDayList":null,
"BaseLeaveType":"ANN",
"CoveringPersonName":"",
"LeaveReasonName":"test",
"DocumentSource":"LEAVE",
"AttachedDocument":"[{\"DocumentId\":352,\"DocumentName\":\"IMG_2322.JPG\",\"DocumentType\":\"JPG\"}]"
}
Ich mag den AttachedDocument
Wert in ein Array erhalten. Also habe ich das gefallen.
NSError *jsonError;
NSData *objectData = [[[[dm.mutArraySelectedReq objectAtIndex:index] objectForKey:@"RequestDetails"] valueForKey:@"RequestForm"] dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData
options:0
error:&jsonError];
if (json!=NULL) {//AttachedDocument
NSString *str=[json valueForKey:@"AttachedDocument"];
NSData *data2=[str dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json2 = [NSJSONSerialization JSONObjectWithData:data2
options:0
error:&jsonError];
if (json2!=NULL) {
NSArray *arrayAttached=[NSArray arrayWithObject:json2];
dm.mutArrayAttachedDocs=[[NSMutableArray alloc] initWithArray:arrayAttached];
}
}
Mein erstes Objekt gibt mir den richtigen Wert für str
Variable. Aber zweites Objekt gibt mir für AttachedDocument
Wert
ich setzen bin nur den Schlüsselwert des AttachedDocument
ersten Objekts
"AttachedDocument": "[
{
\"DocumentId\":354,
\"DocumentName\":\"Screenshot_2016-04-15-00-35-11.png\",
\"DocumentType\":\"image/png\"
}
]"
zweiten Objekts
"AttachedDocument":"[
{
\"DocumentId\":352,
\"DocumentName\":\"IMG_2322.JPG\",
\"DocumentType\":\"JPG\"
}
]"
Können Sie Bitte erkläre mir, was ist die Differenz (eher th ein Bild/PNG und JPG). Warum mein zweites Objekt mir null gibt für AttachedDocument
Bitte helfen Sie mir. Danke
Formatieren Sie Ihre JSON-Samples in verschiedene Zeilen, damit Sie ihre Struktur besser sehen können. –
FYI - Verwenden Sie nicht 'valueForKey:', um ein Objekt von einem 'NSDictionary' zu erhalten. Verwenden Sie 'objectForKey:', es sei denn, Sie haben eine bestimmte und klar verstandene Notwendigkeit, die Schlüsselwertcodierung zu verwenden. – rmaddy
@rmaddyI verwendet Objekt für Schlüssel, um meine str zu bekommen, aber ich bekomme diesen Fehler *** Beenden App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: '- [NSNull dataUsingEncoding:]: nicht erkannt Selektor an Instanz gesendet – Irrd