我有一个 Json 结构,例如:
{
"field1" => "one",
"field2" => "two",
...
}
我用的是perl的Json模块,我可以祝福返回给我的Json变成一个类,比如:
my $result = bless($json->{output},'MyClass')
到目前为止一切顺利 - 现在我可以在 MyClass.pm 中创建方法来返回 field1、field2 等的值。所以似乎通过 bless,我可以直接访问设置对象的属性。但危险是我也可以在代码的后面做一些事情,比如:
$result->{field1} = "anythingIwant";
......这不太好。我知道我可以将属性设置_field1
为表示隐私,但这并不妨碍我这样做$result->{_field1} = "anythingIwant";
那么 perl 中是否有最佳实践方法来处理这种情况?换句话说,能够bless Json输出成一个类进行反序列化是超级方便的,但也显得很危险。我正在寻找两全其美的方法,我仍然可以使用 bless 但也可以防止任何客户端代码执行上述anythingIwant 场景。我已经研究过 Moose、InsideOut 等,但我不确定其中任何一个是否符合要求或只是引入更多复杂性。