SpringBoot: данные RestAPI не заполняются в формате JSON. (? Решение) - PullRequest
0 голосов
/ 09 апреля 2020

Проблема: Получение данных в формате ниже, но я хочу в формате JSON, чтобы я мог связать его.

[[1, "Пользователь"], [2, "Посетитель" "]] <- эти данные я хочу в JSON формате </p>

Репозиторий:

@Repository
public interface CategoryRepository extends JpaRepository<ccCategory,Integer>
{

    public static final String FIND_CATEGORYNAME = "SELECT DISTINCT catID,categoryName from XXCategory";

    @Query(value = FIND_CATEGORYNAME, nativeQuery = true)
    List<Object> getCategoryName();

}

Контроллер:

@RestController
@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600)
public class HomeResource {

    private final Logger log = LoggerFactory.getLogger(HomeResource.class);

    @Autowired
    CategoryRepository categoryRepository;



@GetMapping("/getAllCategory")
        public List<Object> getAllCategory() {
        System.out.println("***** Call : API getAllCategory() ******");
        List<Object> cCategory = categoryRepository.getCategoryName();
        return cCategory;
    }

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Это все еще действует JSON!

Если вы хотите обернуть его внутри объекта, вам нужно создать модель ответа следующим образом:

public class Categories implements Serializable {

    public List<Object> category;
}

Я бы также предложил Вы расширяете это и создаете Category сущность, а не используете Object. Это также создаст отображение для полей внутри вложенных массивов. Из вашего репозитория я вижу, что у вас уже есть какая-то сущность Category, поэтому, возможно, вы сможете использовать ее повторно.

Ваш контроллер может затем вернуть Categories или, что еще лучше, ResponseEntity<Categories>, чтобы вернуть правильный ответ. В этом случае вы можете вернуть cCategory, заключенный в метод org.springframework.http.ResponseEntity.ok.

Вы также можете пропустить объект Categories и использовать объект Category. Это зависит от того, что вы после. Это поможет, если вы предоставите ожидаемый результат.

0 голосов
/ 09 апреля 2020

В List<Object> нет отображения. Конвертировать List<Object> в List<cCategory>. Вы можете разобрать List<Object> таким образом и создать List<cCategory>

for (Object cdata:cCategory) {
   Object[] obj= (Object[]) cdata;
     String catID = (String)obj[0];
    String categoryName = (String)obj[1];
  }
...