【发布时间】:2015-02-17 17:20:34
【问题描述】:
我需要在 java 中创建一个包含一些动态字段的 JSON 响应。这是我要返回的 JSON 响应的示例:
{
"success": true,
"completed_at": 1400515821,
"<uuid>": {
type: "my_type",
...
},
"<uuid>": {
type: "my_type",
...
}
}
“success”和“completed_at”字段易于格式化。如何格式化字段?对应的 java 对象是什么?
基本上我想使用 2 个 java 对象:
public class ApiResponseDTO {
private boolean success;
private DateTime completedAt;
...
}
和
public class AuthenticateResponseDTO extends ApiResponseDTO {
public List<ApplianceResponseDTO> uuids = new ArrayList<ApplianceResponseDTO>();
}
这些 java 对象不符合预期的 JSON 格式。如果我可以将 JSON 格式更改为有一个列表,它会起作用,但我不能更改它。
非常感谢!
【问题讨论】:
-
映射到
<uuid>的 JSON 值是否始终相同? -
动态键是否总是命名为
<uuid>? JSON 对重复键有未定义的行为。 -
如果你可以将这个相似的部分包装成单独的对象,你可以将它存储为地图:stackoverflow.com/questions/28548380/…
-
而不是
,我将有像“ae12-54ef-dfd...”这样的值,所以我不会有重复的键。内部 json 将始终相同(类型、更新日期...)。我已经看到这个答案@Pshemo,但在这个例子中,地图被命名为“细节”。就我而言,我不会有命名地图。解决方案可能真的很简单,但我看不到...... -
你能改变这个 JSON 的结构吗?如果是这样,只需将您的
"completed_at":1400515821, "uuid1":{data1}, "uuid2":{data2}集包装成"completed_at":1400515821, "details":{"uuid1":{data1},"uuid2":{data2}}之类的东西,现在您就可以毫无问题地使用 Map。