是否可以将 javascript 对象或数组转换回本机飞镖地图和/或列表?我正在尝试从 javascript 返回作为 Object 的清单文件,并希望将其转换为 Dart Map 对象。
问问题
1168 次
3 回答
4
您可以使用以下命令将 javascript JSON 转换为 Dart JSON:
import 'dart:json';
import 'package:js/js.dart' as js;
convert(js.Proxy jsonProxy) => JSON.parse(js.context.JSON.stringify(jsonProxy));
于 2012-12-18T20:30:47.623 回答
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"}
于 2012-12-18T19:43:38.927 回答
2
今年 API 发生了许多变化,以下代码是 Alexandre Ardhuin 的答案,适用于最新 (#30104) Dart Sdk
import "dart:convert";
import "dart:js" as js;
convert( js.JsObject object )
{
return JSON.decode( js.context['JSON'].callMethod("stringify", [ object ] ) );
}
于 2013-11-12T16:14:52.713 回答