シーケンス化方法json

69187 ワード

At first, you should convert your NSString to UTF8 representation via [NSString UTF8String]. After that, i'd recommend to store in packet string length, and after that - the string characters themself. All that can be done via appending NSData, created from char* via [NSData dataWithBytes:]
NSMutableData packet = [[NSMutableData alloc] init]; [packet appendBytes:&msg.packetType, sizeof(msg.packetType)]; char *str = [yourString UTF8String]; int len = strlen(str); [packet appendBytes:(void*)&len, sizeof(len)]; [packet appendBytes:(void*)str, len]; 

To parse packet back, you should do:
NSData packet; // your packet [packet getBytes:(void*)&packet.msg range:NSMakeRange(0, sizeof(packet.msg))]; int len; [packet getBytes:(void*)&len range:NSMakeRange(sizeof(packet.msg), sizeof(len)]; NSData *strData = [packet subdataWithRange:NSMakeRange(sizeof(packet.msg) + sizeof(len)), packet.length]; NSString *str = [[NSString alloc] initWithData:strData encoding:UTF8Encoding];
 
              

NSJsonparser

 (IBAction)touchWriteButton:(id)sender {       NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];       [dictionary setValue:@"Anthony" forKey:@"First Name"];       [dictionary setValue:@"Robbins" forKey:@"Last Name"];       [dictionary setValue:[NSNumber numberWithUnsignedInteger:51] forKey:@"Age"];       NSArray *arrayOfAnthonysChildren = [[NSArray alloc] initWithObjects:@"Anthony's Son 1", @"Anthony's Daughter 1", @"Anthony's Son 2", @"Anthony's Son 3", @"Anthony's Daughter 2", nil];       [dictionary setValue:arrayOfAnthonysChildren forKey:@"children"];       NSError *error = nil;       NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];       if (error) {           NSLog(@"dic->%@",error);       }       [dictionary release];       BOOL succeed = [jsonData writeToFile:JSON_PATH atomically:YES];       if (succeed) {           NSLog(@"Save succeed");       }else {           NSLog(@"Save fail");       }  }