Java : Convert Object consisting enum to Json Object

标签 java json enums

我正在使用 org.json 库将对象转换为 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,你可以在枚举中添加getter:

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

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

序列化结果:

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

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

关于Java : Convert Object consisting enum to Json Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30871013/

相关文章:

java - 如何暂停线程执行

json - 如何在 Powershell 中使用 jq 写入 JSON 文件而不更改二进制文件?

objective-c - 在 Objc 中定义的枚举 > 在 Swift 中声明 > 在 Objc 中使用

c - 转换为整数类型后,C++枚举类型的符号不正确

java - 在 RandomAccessFile 中保存枚举

java - “java”插件与 Android 插件不兼容

java - 如何格式化这个输出?

java - 谁能解释为什么 a4j :poll cannot reRender rich:dataTable?

python - 如何在 Python 中检查神秘的反序列化对象

c++ - CPPRest SDK 向服务器发出 HTTP 请求