からクラスをインスタンス化するためにダーツに私が正常より、Map toJson()
方法を暴露することによってdat:convert
「オプトイン」できるとJSON.encode(myClass)
とJSON-ifiedことができるクラスを作成するために管理しました以下、次のように:使用JSON.decode()の周り参照してJSON文字列
//My dummy class
class MyClass{
String p1;
String p2;
Map toJson{
return {
'p1':this.p1,
'p2':this.p2
}
}
}
//so I can do
String jsonString = JSON.encode(myClass)
しかし私は、周りにこれも、他の方法をしたいたい:
String jsonString = '{"p1":"value","p2":"value"}'
MyClass instance = JSON.decode(jsonString)
しかし、これまでのところ、私は方法を見つけることができなかったしました。 私は、のようなものマップからそれを初期化私のクラスのコンストラクタを構築することができます知っている:私はちょうどJSON.encode()とJSON.decodeを使用して、より「対称」方法を探していましたが
String jsonString = '{"p1":"value","p2":"value"}'
MyClass instance = MyClass.fromMap(JSON.decode(jsonString))
を()、それは何とかできますか?何か不足していますか?
何ちょうど隠れる程度'JSON.decode'をコンストラクタに入れていますか?(それは私の意見です)明示的にtoJson()を呼び出す方が良いです。 stacktraceには表示されません(なぜか分かりません)。 –
hmmm、確かに可能でしたが、私の質問は、なぜJSON.encode()をtoJson()に公開し、それ以外の方法で公開することができないのかを知ることでした。 –