Naresh
Naresh

Reputation: 17902

Convert NSString in to NSDictionary

I'm using JSON POST approach, my code is

[_urlReq setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[_urlReq setHTTPMethod:@"POST"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long) [postData length]];
[_urlReq setValue:postLength forHTTPHeaderField:@"Content-Length"];
[_urlReq setHTTPBody:postData];
_dataTask = [_urlSession dataTaskWithRequest:_urlReq  completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

if (!(data == nil)) {

I'm converting response data in to string formate

NSString* myString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];// NSUTF8StringEncoding
NSLog(@"myString :%@", myString);

OutPut:

myString :{"Response":{"status":"SUCCESS","error_code":"0","message":"message","Array":[{"name" => "VVV","name" => "CHE","ac" => "5a8805a","email" =>"vvv","line1" =>"","line2" =>"","no" =>"","street" =>"","pin_code" =>"","state_id" =>"0","district_name" =>"0"}]}}

//Convert string into Dic
NSData *data1 = [myString dataUsingEncoding: NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data1 options:0 error:nil];
NSLog(@"json : %@", json);
NSLog(@"Response : %@",[json objectForKey:@"Response"]);

//Second approach to convert string to dic
NSError *err = nil;
NSArray *array = [NSJSONSerialization JSONObjectWithData:[myString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&err];
NSLog(@"array :%@", array);
NSDictionary *dictionary = [array objectAtIndex:0];
NSLog(@"dictionary : %@", dictionary);
NSString *test = [dictionary objectForKey:@"Response"];
NSLog(@"Test is %@",test);                               

}

I don't know what is the problem here....

enter image description here

Upvotes: 0

Views: 193

Answers (3)

Som Parkash
Som Parkash

Reputation: 234

Your json string is not correct. Please check my demo json string.

try this

let myString :String = "{\"Response\":{\"status\":\"SUCCESS\",\"error_code\":\"0\",\"message\":\"message\",\"Array\":[{\"name\" : \"VVV\",\"name\" : \"CHE\",\"ac\" : \"5a8805a\",\"email\" :\"vvv\",\"line1\" :\"\",\"line2\" :\"\",\"no\" :\"\",\"street\" :\"\",\"pin_code\" :\"\",\"state_id\" :\"0\",\"district_name\" :\"0\"}]}}"

    if let data = myString.data(using: .utf8){
        do{
            let json = try JSONSerialization.jsonObject(with: data, options: .init(rawValue: 0));
            print(json)
        }catch{

        }

    }

Output

{
    Response =     {
        Array =         (
                        {
                ac = 5a8805a;
                "district_name" = 0;
                email = vvv;
                line1 = "";
                line2 = "";
                name = VVV;
                no = "";
                "pin_code" = "";
                "state_id" = 0;
                street = "";
            }
        );
        "error_code" = 0;
        message = message;
        status = SUCCESS;
    };
}

Upvotes: -1

McDonal_11
McDonal_11

Reputation: 4075

You JSON format is Starting with Dictionary.

Instead of,

NSArray *array = [NSJSONSerialization JSONObjectWithData:[myString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&err];
NSLog(@"array :%@", array);

Replace this and Try

NSDictionary *jSonDict = [NSJSONSerialization JSONObjectWithData:[myString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&err]; 

Second Try:

NSDictionary *jSonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err];

For more info, how to validate JSON, use this link enter link description here

Your JSON:

enter image description here

Upvotes: 2

Kamlesh Shingarakhiya
Kamlesh Shingarakhiya

Reputation: 2777

Replace JSON response string with this

{"Response":{"status":"SUCCESS","error_code":"0","message":"message","Array":[{"name" : "VVV","name" : "CHE","ac" : "5a8805a","email" : "vvv","line1" : "","line2" : "","no" : "","street" : "","pin_code" : "","state_id" : "0","district_name" : "0"}]}}

Upvotes: 0

Related Questions