2012-12-18 58 views

回答

2

在API許多變化是由今年的表現,下面的代碼是亞歷山大Ardhuin的答案適用於最新的(#30104)飛鏢Sdk

import "dart:convert"; 
import "dart:js" as js; 

convert(js.JsObject object) 
{ 
    return JSON.decode(js.context['JSON'].callMethod("stringify", [ object ])); 
} 
3

您可以在Javascript上下文中使用內置的Javascript方法JSON.stringify()。

Future getManifest() { 
    var completer = new Completer(); 

    js.scoped(() { 
    var chrome = js.context.chrome; 
    var manifest_proxy = chrome.runtime.getManifest(); 
    var manifest_string = js.context.JSON.stringify(manifest_proxy); 
    var manifest = JSON.parse(manifest_string); 
    logger.fine("manifest_string = $manifest_string"); 
    completer.complete(manifest); 
    }); 

    return completer.future;  
} 

這將打印出以下控制檯發送完成者飛鏢地圖。

manifest_string = {"app":{"background":{"scripts":["main.js"]}},"manifest_version":2,"minimum_chrome_version":"23","name":"chrome.dart - test","version":"1"} 
+1

你不需要使用'Future'。 –

+0

不錯,所以被範圍化並不需要Future return。在這個庫中,我開始使用Future作爲由Chrome提供的大部分調用的模式。* apis。如果是這種情況,那麼我只需要期貨就需要回調的方法。 http://goo.gl/x2H2K –

4

您可以將JavaScript的JSON轉換成飛鏢JSON有:

import 'dart:json'; 
import 'package:js/js.dart' as js; 

convert(js.Proxy jsonProxy) => JSON.parse(js.context.JSON.stringify(jsonProxy)); 
相關問題