Sample code for 30+ languages & platforms
Objective-C

Swap JSON Objects

See more JSON Examples

Demonstrates how to swap two JSON objects within a JSON document.

Chilkat Objective-C Downloads

Objective-C
#import <CkoJsonObject.h>

BOOL success = NO;

CkoJsonObject *json = [[CkoJsonObject alloc] init];
json.EmitCompact = NO;

// Load the following JSON:

// {
//   "petter": {
//     "DOB": "26/02/1986",
//     "gender": "male",
//     "country": "US"
//   },
//   "Sara": {
//     "DOB": "13/05/1982",
//     "gender": "female",
//     "country": "FR"
//   },
//   "Jon": {
//     "DOB": "19/03/1984",
//     "gender": "male",
//     "country": "UK"
//   }
// }

success = [json LoadFile: @"qa_data/json/people.json"];
if (success == NO) {
    NSLog(@"%@",json.LastErrorText);
    return;
}

// Swap the positions of Jon and Sara.
int index1 = [[json IndexOf: @"Jon"] intValue];
int index2 = [[json IndexOf: @"Sara"] intValue];
[json Swap: [NSNumber numberWithInt: index1] index2: [NSNumber numberWithInt: index2]];

// We have this now:
NSLog(@"%@",[json Emit]);

// {
//   "petter": {
//     "DOB": "26/02/1986",
//     "gender": "male",
//     "country": "US"
//   },
//   "Jon": {
//     "DOB": "19/03/1984",
//     "gender": "male",
//     "country": "UK"
//   },
//   "Sara": {
//     "DOB": "13/05/1982",
//     "gender": "female",
//     "country": "FR"
//   }
// }

// To swap an inner member:

CkoJsonObject *jsonSara = [[CkoJsonObject alloc] init];
[json ObjectOf2: @"Sara" jsonObj: jsonSara];

index1 = [[jsonSara IndexOf: @"DOB"] intValue];
index2 = [[jsonSara IndexOf: @"country"] intValue];
[jsonSara Swap: [NSNumber numberWithInt: index1] index2: [NSNumber numberWithInt: index2]];

// We now have this:
NSLog(@"%@",[json Emit]);

// {
//   "petter": {
//     "DOB": "26/02/1986",
//     "gender": "male",
//     "country": "US"
//   },
//   "Jon": {
//     "DOB": "19/03/1984",
//     "gender": "male",
//     "country": "UK"
//   },
//   "Sara": {
//     "country": "FR",
//     "gender": "female",
//     "DOB": "13/05/1982"
//   }
// }