我正在使用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" : {}}
它显示为空白并添加了卷曲基数。这是什么意思?有人遇到过这个问题吗?
首先,我强烈建议您不要使用此库(org.json),这是一个非常古老且不受支持的库(据我所知)。我建议杰克逊或格森。
但是,如果您确实需要JSONObject,则可以将getter添加到枚举中:
public enum JobStatus implements Serializable{ INCOMPLETE, INPROGRESS, ABORTED, COMPLETED; public String getStatus() { return this.name(); } }
序列化的结果:
{"id":"12345","status":{"status":"INPROGRESS"}}
据我所知,JSONObject不支持枚举的正确序列化,枚举内部没有任何其他数据。