通过浏览我成功地创建了一个类,可以通过公开一个 Map toJson()
方法来 "opt in" dat:convert
,并且可以通过 JSON.encode(myClass)
进行 json-ify,更或者像下面这样:
//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)
但是到目前为止,我还没有找到解决方法。我知道我可以为我的类构建一个构造函数,从map中初始化它,例如:
String jsonString = '{"p1":"value","p2":"value"}'
MyClass instance = MyClass.fromMap(JSON.decode(jsonString))
然而,我正在寻找一种更“对称”的方法,只使用JSON.encode()和JSON.decode(),这是否可行?我有什么遗漏的吗?
JSON.decode
放在构造函数里隐藏怎么样?而且我认为最好显式地调用toJson()
,因为如果它抛出异常,它不会出现在堆栈跟踪中(我不知道为什么)。 - Adamovskiy