5

JavaScript オブジェクトまたは配列をネイティブ dart マップおよび/またはリストに戻すことは可能ですか? javascript から Object として返されたマニフェスト ファイルを取得しようとしていて、それを Dart Map オブジェクトに変換したいと考えています。

4

3 に答える 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;    
}

以下をコンソールに出力し、コンプリータに dart マップを送信します。

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 の多くの変更は今年までに行われました。次のコードは、最新の (#30104) Dart Sdk に適応した Alexandre Ardhuin の回答です。

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 に答える