我有一个JSONDeserializer,如下所示:
if (json != null)
{
response = new JSONDeserializer<EnvelopeBuilder>().use(null, EnvelopeBuilder.class)
// Target
.use("header.targetIdentifier", EnvelopeJsonCodec.locator)
// Source
.use("header.sourceIdentifier", EnvelopeJsonCodec.locator)
// Do it
.deserialize(json);
EnvelopeJsonCodec.logger.debug(new StringBuffer("Builder: ").append(response).toString());
}
它依赖于一个像这样的类型定位器:
private static final TypeLocator<String> locator = new TypeLocator<String>("msg-type")
// Request / Response
.add("TARGETED_MESSAGE", ServiceIdentifier.class)
// Publish / Subscribe
.add("PUBLISH", PublishChannel.class);
但我意识到,由于客户端不一定在我的控制之下,他们可能会键入msg类型,我随后会得到一个null对象。
稍后我可以测试null对象,但对于后面的人来说,对象为null的原因是因为msg类型错误并不明显。
如果消息类型出现错误,我如何让TypeLocator抛出异常?
最终,我通过更严格的模式控制了错误的条目。