【问题标题】:Create an array of POJO's from JSON从 JSON 创建一个 POJO 数组
【发布时间】:2021-01-23 21:49:01
【问题描述】:

我正在尝试从 json 中获取多个 POJO,看起来像这样

  {
  "obj1": {
    "quizowner": "testacccc",
    "question": "questionB",
    "answer": "6",
    "directions": "directionsB",
    "quizname": "quiz Name",
    "subject": "subjB",
    "options": "5, 7, 6",
    "type": "CHECKBOX"
  },
  "obj0": {
    "quizowner": "testacccc",
    "question": "questionA",
    "answer": "3",
    "directions": "directionsA",
    "quizname": "quiz Name",
    "subject": "subjA",
    "options": "1,2,3",
    "type": "MULTIPLECHOICE"
  }
}

我在使用 JACKSON 之前已经这样做了,但只使用了一个对象。 obj 中最多可能有 50 个,我不知道如何访问它们。

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("questions")
public Response addQuiz(Question question, @Context HttpHeaders headers) {


}

如何将 JSON 映射到 Question pojo 的数组中?还是有更好的办法?

【问题讨论】:

  • JSON 代表列表/数组吗?它应该看起来像 [{"obj1":{}}, {"obj2":{}}]
  • 我用两个 obj 更新了它的外观。需要括号吗?我直接将 JSONObject 转换为字符串 @AlexRudenko
  • 试试public Response addQuiz(Map<String, Question> questions, @Context HttpHeaders headers)。您始终可以将JSON Object 视为Map

标签: java json jackson pojo


【解决方案1】:

如果你传入的 json 像 {"obj1":{"question":"questionB","answer":"6","directions":"directionsB","quizname":"quiz Name","subject":"subjB","options":"5, 7, 6","type":"CHECKBOX"}}|

然后一种方法是创建一个类

public class QuestionBase {
  @JsonProperty("obj1")
  public Question question;
  :
  : //getters n setters
}

并像使用它

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("questions")
public Response addQuiz(QuestionBase questionBase, @Context HttpHeaders headers) {
   questionBase.getQuestion() ----> will give you the question details

}

第二种方式我可以建议编写自定义 JSON 反序列化。你可以在here上看到一个例子

【讨论】:

  • 用这个方法,我是不是说addQuiz(String jsonString),而不是把pojo作为参数?
  • @johnlacrosse 你能检查我更新的答案吗
  • 我的 JSON 中有多个 obj。这只对一个人有用吗?
  • @johnlacrosse 你能告诉我确切的json吗,你显示的那个不完整。还做keyobj1,obj2动态一个
猜你喜欢
  • 2021-01-22
  • 2016-10-02
  • 2020-10-23
  • 2020-02-10
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多