简体   繁体   English

从JavaScript到使用JSON的Objective-C

[英]From JavaScript to Objective-C with JSON

I have no idea how to properly 'return' this JSON object (in JavaScript): 我不知道如何正确地“返回”这个JSON对象(在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): 我想用(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): 显然,这导致了NSString,我真正想要的是NSData来做到这一点(Objective-C):

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

So, how to properly return the JSON? 那么,如何正确返回JSON?

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. 请注意, JSON.parse从字符串生成对象,而JSON.stringify从对象生成字符串。 No need to do it manually. 无需手动进行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM