2013-12-12 37 views
0

使用ding文章中概述的想法使用Dart和JSON Web服務https://www.dartlang.org/articles/json-web-service/,我一直在試圖實現關於使用JsonObject和接口來產生JSON數據的強類型部分。Dart使用Json_object生成強大的打字

該文章指出,應該寫一些類似的東西。

abstract class Language { 
    String language; 
    List targets; 
    Map website; 
} 

class LanguageImpl extends JsonObject implements Language { 
    LanguageImpl(); 

    factory LanguageImpl.fromJsonString(string) { 
    return new JsonObject.fromJsonString(string, new LanguageImpl()); 
    } 
} 

但是編譯器 '失敗' 在類LanguageImpl與消息

的定義失蹤繼承的成員: 'Language.website', 'Language.targets' 和 「Language.language 「

更加混亂的代碼會不會有問題....運行

+0

您需要將@proxy註釋添加到LanguageImpl類中,但不幸從JsonObject繼承它。血淋淋的細節[這裏](https://code.google.com/p/dart/issues/detail?id=6111)。 –

回答

0

在Darteditor你得到快速修復支持度f或這個。 設置插入符號爲LanguageImpl並按ctrl + 或使用上下文菜單>快速修復。 您會從自動生成的抽象基類中繼承遺漏的具體實現。

Dart是一種動態語言,因此非常靈活。 這些工具支持您並嘗試給出有意義的警告和提示,指出可能出現的問題 但即使尚未完成,也不會阻止您運行程序。

您可以使用該類上的the @proxy annotation來隱藏警告。 這也需要該類有一個noSuchMethod()實現。

+0

謝謝,但具體類不應該實現接口類中定義的屬性,因爲它們將由JsonObject在運行時通過noSuchMethod方法「實現」。我想應該有一個註釋來抑制那條線上的編譯器錯誤信息... – richard

+0

我擴展了我的答案。 –