how to write json file in ios

14,679

EDIT: As correctly pointed out by @IulianOnofrei, use the document directory to read/write files and not the resources directory.

Use these methods to read and write data, and your problem should be solved:

- (void)writeStringToFile:(NSString*)aString {

    // Build the path, and create if needed.
    NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString* fileName = @"bookmark.json";
    NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];

    if (![[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) {
        [[NSFileManager defaultManager] createFileAtPath:fileAtPath contents:nil attributes:nil];
    }

    // The main act...
    [[aString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:NO];
}

- (NSString*)readStringFromFile {

    // Build the path...
    NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString* fileName = @"bookmark.json";
    NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];

    // The main act...
    return [[NSString alloc] initWithData:[NSData dataWithContentsOfFile:fileAtPath] encoding:NSUTF8StringEncoding];
}

Code courtesy from another SO answer found here: Writing and reading text files on the iPhone

And of course, the first time you try to read this file from the documents directory you won't get anything, so maybe the first step would be to copy the file there if it does not exist.

Hope this helps.

Share:
14,679
mohammad sufyan
Author by

mohammad sufyan

Updated on June 18, 2022

Comments

  • mohammad sufyan
    mohammad sufyan almost 2 years

    Here i am reading and writing a json file.

    Reading is done correctly but while i am writing a file it doesn't write data in json file.

    Here is my code.

    //reading Json file....
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"bookmark" ofType:@"json"];
    
    NSData *content = [[NSData alloc] initWithContentsOfFile:filePath];
    NSArray *bookmarkJson=[NSJSONSerialization JSONObjectWithData:content options:0 error:nil];
    //this contains array's of dictionary....
    NSDictionary *newBookmark=@{@"index":@"1.1.1.1",@"text":@"Header",@"htmlpage":@"page_name"};
    
    //take new array to add data with previous one
    NSMutableArray *temp=[[NSMutableArray alloc]initWithArray:bookmarkJson];
    // add object to new array...
    [temp insertObject:newBookmark atIndex:0];
    
    //now serialize temp data....
    NSData *serialzedData=[NSJSONSerialization dataWithJSONObject:temp options:0 error:nil];
    
    NSString *saveBookmark = [[NSString alloc] initWithBytes:[serialzedData bytes] length:[serialzedData length] encoding:NSUTF8StringEncoding];
    
    //now i write json file.....    
    [saveBookmark writeToFile:@"bookmark.json" atomically:YES encoding:NSUTF8StringEncoding error:nil];
    

    In "saveBookmark" (NSString)object i got correct file format but in bookmark.json file i didn't got any new values.

    Please help me with this......