我使用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());
Run Code Online (Sandbox Code Playgroud)
它显示如下输出:
{"id":"12345", "status" : {}}
Run Code Online (Sandbox Code Playgroud)
它显示空白并添加Curly基础.这是什么意思?有人经历过这个问题吗?
小智 17
首先,我强烈建议不要使用这个库(org.json),这是非常古老的,不支持(据我所知)库.我建议杰克逊或者Gson.
但是如果你真的需要JSONObject,你可以在getum中添加getter:
public enum JobStatus implements Serializable{
INCOMPLETE,
INPROGRESS,
ABORTED,
COMPLETED;
public String getStatus() {
return this.name();
}
}
Run Code Online (Sandbox Code Playgroud)
序列化的结果:
{"id":"12345","status":{"status":"INPROGRESS"}}
Run Code Online (Sandbox Code Playgroud)
据我所知,JSONObject不支持对内部没有任何附加数据的枚举的正确序列化.
小智 5
ObjectMapper mapper= new ObjectMapper();
new JSONObject(mapper.writeValueAsString(job));
Run Code Online (Sandbox Code Playgroud)
就可以了。现在Enums,DateTime类型看起来很正常,并且可以正确转换为 json 对象。
我作为一个寻求答案的人来到这个页面,我的研究帮助我回答了这个问题。