java-将自定义异常序列化为JSON,并非所有字段都已序列化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-将自定义异常序列化为JSON,并非所有字段都已序列化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2161字,纯文字阅读大概需要4分钟。
内容图文
![java-将自定义异常序列化为JSON,并非所有字段都已序列化](/upload/InfoBanner/zyjiaocheng/678/0dc762b324594a2d988c93b8f6b299b2.jpg)
我正在尝试使用Jackson库中的writeValueAsString()方法序列化Java中的自定义Exception.我打算通过HTTP将其发送到另一台计算机.这是局部工作的,因为序列化后并非所有字段都包含在JSON中.顶级异常Throwable实现Serializable接口,并且还具有一些构造函数,这些构造函数添加有关要序列化的内容的信息.我想真相就在这里.请提供一些建议.这是我的自定义异常代码:
import java.io.Serializable;
public class MyException extends RuntimeException{
private static String type = null;
private static String severity = null;
// somewhere on google I red that should use setters to make serialize work
public static void setType(String type) {
MyException.type = type;
}
public static void setSeverity(String severity) {
MyException.severity = severity;
}
public MyException(String message) {
super(message);
}
}
我在代码中使用的某处:
MyException exc = new MyException("Here goes my exception.");
MyException.setType(exc.getClass().getSimpleName());
MyException.setSeverity("Major");
throw exc;
在其他地方,我有:
ObjectMapper mapper = new ObjectMapper();
try {
responseBuilder.entity(mapper.writeValueAsString(MyException) );
}
catch (JsonGenerationException e) {e.printStackTrace(); }
catch (JsonMappingException e) {e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
结果JSON对象为:
{"cause":null,"message":"Here goes my exception.","localizedMessage":"Here goes my exception.","stackTrace":[{...a usual stack trace...}]}
在这里,我还希望看到我的类型和严重性字段.
解决方法:
我将类型和严重性设为非静态,并且看起来工作正常.我使用了以下代码,并且在序列化输出中看到了类型和严重性.
public class MyException extends RuntimeException
{
private String type = null;
private String severity = null;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSeverity() {
return severity;
}
public void setSeverity(String severity) {
this.severity = severity;
}
public MyException(String message) {
super(message);
}
}
…和
MyException exc = new MyException("Here goes my exception.");
exc.setType(exc.getClass().getSimpleName());
exc.setSeverity("Major");
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(exc));
希望这可以帮助!
内容总结
以上是互联网集市为您收集整理的java-将自定义异常序列化为JSON,并非所有字段都已序列化全部内容,希望文章能够帮你解决java-将自定义异常序列化为JSON,并非所有字段都已序列化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。