Как создать родительский дочерний ответ Json в Spring Boot с помощью Enum, используя Java - PullRequest
1 голос
/ 05 августа 2020

Я пытаюсь создать ответ json из приложения загрузки Spring, в котором имя перечисления будет родительской структурой, а ниже будет находиться весь дочерний элемент. То, что я создал, показывает только дочернюю иерархию, но я хочу и родителя. Как и я хочу ниже

items: [
  {
    title: "ABC ",
    subTitle: "",
    description:
         "123  ",
    url: "",
  },
  {
    title: "Revenue",
    subTitle: "",
    description:
      "Digitally ",
    url: "",
  },
  {
    title: "xyz",
    subTitle: "",
    description:
      "345,",
    url: "stackoverflow.com",
  },
  {
    title: "kji",
    subTitle: "",
    description:
      "890",
    url: "",
  },
  {
    title: "KOI",
    subTitle: "",
    description:
      "054,",
    url: "",
  },
]

, я получаю

[
  {
    title: "ABC ",
    subTitle: "",
    description:
         "123  ",
    url: "",
  },
  {
    title: "Revenue",
    subTitle: "",
    description:
      "Digitally ",
    url: "",
  },
  {
    title: "xyz",
    subTitle: "",
    description:
      "345,",
    url: "stackoverflow.com",
  },
  {
    title: "kji",
    subTitle: "",
    description:
      "890",
    url: "",
  },
  {
    title: "KOI",
    subTitle: "",
    description:
      "054,",
    url: "",
  },
]

Ниже приведены коды, которые у меня есть б / у

import java.util.Arrays;
import java.util.List;

 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;

 @RestController
 public class EnumController {

@GetMapping("/getEnumResponse")
public List<TreeEnum> getCurrentContent() {
    MyData  mData = new MyData ();
   return Arrays.asList(TreeEnum.values());
    
    } 

   }



import com.fasterxml.jackson.annotation.JsonFormat;

@JsonFormat(shape=JsonFormat.Shape.OBJECT)
public enum TreeEnum {
VALUE1 ("Pay","","Digitally.",""),
VALUE2 ("Revenue","","enable",""),
VALUE3("Banking","","Treasury Reporting etc","CHOICE"),
VALUE4("Accounting","","Corporate","");

private String title;
private String subTitle;
private  String url;
private String description;

Response(String title,String subTitle,String description,String url) {
    this.title = title;
    this.subTitle = subTitle;
    this.description = description;
    this.url = url;
    
}

public String getTitle() {
    return title;
}


public String getSubTitle() {
    return subTitle;
}

public String getUrl() {
    return url;
}

public String getDescription() {
    return description;
    }
  

   }







import java.util.List;

 public class MyData {
 private List<TreeEnum > responses;

  public List<TreeEnum > getResponses() {
    return responses;
  }

    public void setResponses(List<Response> responses) {
    this.responses = responses;
     }
  }

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Вы возвращаете коллекцию элементов, вам необходимо вернуть объект с элементами атрибутов, которые будут содержать коллекции.

Это может быть выполнено с помощью Map.

@GetMapping("/getEnumResponse")
public Map getCurrentContent() {
   Map response = new HashMap();
   response.put("items", TreeEnum.values());
   return response;
} 

Если вы на Java9 или выше вы можете

@GetMapping("/getEnumResponse")
public Map getCurrentContent() {
   return Map.of("items", TreeEnum.values());
} 
0 голосов
/ 05 августа 2020

Создайте ItemDto и передайте List of TreeEnum. Вы также можете использовать @JsonRootName ("Item"), если вам не нужен список и в вашем сопоставлении включить root значение mapper.enable (SerializationFeature.WRAP_ROOT_VALUE);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...