2012-12-18 18 views
5

Có thể chuyển đổi đối tượng javascript hoặc mảng trở lại bản đồ phi tiêu và/hoặc Danh sách gốc không? Tôi đang cố gắng để có được một tập tin biểu hiện trở về từ javascript như là đối tượng và muốn chuyển đổi nó sang một đối tượng Dart Map.Sử dụng js-interop làm thế nào tôi có thể chuyển đổi javascript Array và Object thành bản đồ phi tiêu bản đồ.

Trả lời

2

Nhiều thay đổi trong API đã được thực hiện bởi năm nay, đoạn mã sau là câu trả lời Alexandre Ardhuin của thích nghi với mới nhất (# 30.104) Dart Sdk

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

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

Bạn có thể sử dụng phương thức Javascript được xây dựng trong JSON.stringify() từ ngữ cảnh Javascript.

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

Điều nào sẽ in ra bảng sau đây và gửi bản đồ đầy đủ phi tiêu.

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

Bạn không cần sử dụng 'Tương lai'. –

+0

Rất đẹp, vì vậy phạm vi không yêu cầu lợi nhuận trong tương lai. Trong thư viện này, tôi bắt đầu sử dụng Tương lai làm mẫu cho hầu hết các cuộc gọi được cung cấp bởi chrome. * Apis. Nếu đây là trường hợp thì tôi chỉ nên cần Futures cho các phương thức yêu cầu callbacks. http://goo.gl/x2H2K –

4

Bạn có thể chuyển đổi một JSON javascript để một Dart JSON với:

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

convert(js.Proxy jsonProxy) => JSON.parse(js.context.JSON.stringify(jsonProxy)); 
Các vấn đề liên quan