mmvie
mmvie

Reputation: 2581

From JavaScript to Objective-C with JSON

I have no idea how to properly 'return' this JSON object (in JavaScript):

function callback() {   
                var points = '{\"points\": [';
                var params = polyline.getLatLngs();

                var i;
                for (i = 0; i < points.length; i++) {
                    params = params.concat('{\"latitude\": ', points[i].lat, ', \"longitude\": ', points[i].lng, '}');
                    if (i < points.length - 1) {
                        params = params.concat(', ');
                    }
                }
                params = params.concat('] }');

                return JSON.parse(params);
            }

I want to catch it with something like (Objective-C):

NSString *s = [self.webView stringByEvaluatingJavaScriptFromString:@"callback();"];

Obviously this results in a NSString, what I really want is NSData to do this (Objective-C):

NSData *data = [s dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *response = [NSJSONSerialization JSONObjectWithData:data options:NSJSONWritingPrettyPrinted error:&error];

So, how to properly return the JSON?

Upvotes: 1

Views: 1452

Answers (1)

user123444555621
user123444555621

Reputation: 152976

This should do it:

function callback() {
    var params = polyline.getLatLngs();
    var result = [];
    var i;
    for (i = 0; i < params.length; i++) {
        result.push({latitute: params[i].lat, longitude: params[i].long});
    }

    return JSON.stringify({points: result});
}

Note that JSON.parse generates an object from a string, and JSON.stringify creates a string from an object. No need to do it manually.

Upvotes: 1

Related Questions