将动态的 JSON 键映射到一个类字段,使用 JPA。

huangapple go评论170阅读模式
英文:

Map a dynamic json key to a class field using JPA

问题

我正在尝试将一个 JSON 对象映射到一个实体类(Entity class)。我的 JSON 如下所示:

  1. {
  2. "availabilities": {
  3. "2020-07-14T00:00:00Z": "Not Available",
  4. "2020-08-14T00:00:00Z": "Not Available",
  5. "2020-06-14T00:00:00Z": "Not Available",
  6. "2020-05-14T00:00:00Z": "Not Available",
  7. "2020-00-14T00:00:00Z": "Not Available"
  8. }
  9. }

我使用 Spring Data 创建了一个实体类:

  1. @Entity
  2. public class Availabilities {
  3. @Id
  4. @GeneratedValue(strategy = GenerationType.AUTO)
  5. private Long id;
  6. private String date;
  7. private String availability;
  8. public String getDate() {
  9. return date;
  10. }
  11. public void setDate(String date) {
  12. this.date = date;
  13. }
  14. public String getAvailability() {
  15. return availability;
  16. }
  17. public void setAvailability(String availability) {
  18. this.availability = availability;
  19. }
  20. }

但我得到了以下错误:

  1. com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "2020-07-14T00:00:00Z" (class org.abc.hotel.booking.model.Availabilities)

请帮助。

英文:

I am trying to map a json object to an Entity class. My Json is as follows:

  1. {
  2. "availabilities": {
  3. "2020-07-14T00:00:00Z": "Not Available",
  4. "2020-08-14T00:00:00Z": "Not Available",
  5. "2020-06-14T00:00:00Z": "Not Available",
  6. "2020-05-14T00:00:00Z": "Not Available",
  7. "2020-00-14T00:00:00Z": "Not Available"
  8. }
  9. }

I created a entity class using spring data :

  1. @Entity
  2. public class Availabilities {
  3. @Id
  4. @GeneratedValue(strategy = GenerationType.AUTO)
  5. private Long id;
  6. private String date;
  7. private String availibility;
  8. public String getDate() {
  9. return date;
  10. }
  11. public void setDate(String date) {
  12. this.date = date;
  13. }
  14. public String getAvailibility() {
  15. return availibility;
  16. }
  17. public void setAvailibility(String availibility) {
  18. this.availibility = availibility;
  19. }
  20. }

But i am getting the following error:

  1. com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "2020-
  2. 07-14T00:00:00Z" (class org.abc.hotel.booking.model.Availabilities)

Please help.

答案1

得分: 1

你的代码正在尝试按键值映射,这意味着你的变量是键。在你的情况下,JSON 应该如下工作:

  1. // 映射到可用性
  2. {
  3. "date": "2020-07-14T00:00:00Z",
  4. "availibility": "Not Available"
  5. }

如果你想解析成列表 => https://stackoverflow.com/questions/44589381/how-to-convert-json-string-into-list-of-java-object

英文:

your code is trying map by key-value, that mean your variable is the key.
in your case. json look like this will work

  1. // map to Availabilities
  2. {
  3. "date": "2020-07-14T00:00:00Z",
  4. "availibility": "Not Available",
  5. }

if you want to parse into a list => https://stackoverflow.com/questions/44589381/how-to-convert-json-string-into-list-of-java-object

huangapple
  • 本文由 发表于 2020年7月22日 09:56:35
  • 转载请务必保留本文链接:https://go.coder-hub.com/63025625.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定