ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java:将包含枚举的对象转换为Json对象

2019-09-30 17:03:27  阅读:303  来源: 互联网

标签:java json enums


我使用org.json库将Object转换为Json格式.请检查以下代码段.

public enum JobStatus implements Serializable{
     INCOMPLETE,
     INPROGRESS,
     ABORTED,
     COMPLETED
}

public class Job implements Serializable {
    private string id;
    private JobStatus status;
    ...
}

...

// Create Job Object
Job job = new Job("12345", JobStatus.INPROGRESS);

// Convert and print in JSON format
System.out.println(new JSONObject(job).toString());

它显示如下输出:

 {"id":"12345", "status" : {}}

它显示空白并添加Curly基础.这是什么意思?有人经历过这个问题吗?

解决方法:

首先,我强烈建议不要使用这个库(org.json),这是非常古老的,不支持(据我所知)库.我建议JacksonGson.

但是如果你真的需要JSONObject,你可以在getum中添加getter:

 public enum JobStatus implements Serializable{
    INCOMPLETE,
    INPROGRESS,
    ABORTED,
    COMPLETED;

    public String getStatus() {
        return this.name();
    }
}

序列化的结果:

{"id":"12345","status":{"status":"INPROGRESS"}}

据我所知,JSONObject不支持对内部没有任何附加数据的枚举的正确序列化.

标签:java,json,enums
来源: https://codeday.me/bug/20190930/1836233.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有