2012-03-20 54 views
1

我不知道如何正確地 '迴歸' 這個JSON對象(在JavaScript):從JavaScript以Objective-C的使用JSON

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); 
      } 

我想要的東西,如(Objective-C的)來捕捉它:

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

顯然,這導致的NSString,我真正想要的是NSData的做到這一點(的Objective-C):

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

那麼,如何親perly返回JSON?

+2

對不起,您是否只是通過串聯的方式在JavaScript中構建JavaScript對象,然後解析它? – Ryan 2012-03-20 22:51:28

+0

@minitech的含義是,JavaScript **原生**理解JSON語法 - 您不必構造像這樣的字符串並解析它;你可以直接創建對象。 – Pointy 2012-03-20 22:56:09

回答

1

這應做到:

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}); 
} 

注意JSON.parse產生從字符串對象,JSON.stringify創建從對象的字符串。無需手動完成。