JSON ошибка разбора: невозможно десериализовать экземпляр .. из маркера START_ARRAY - PullRequest
0 голосов
/ 02 апреля 2020

Я знаю, что есть несколько вопросов по stackoverflow относительно этой проблемы. Но я часами пытался устранить эту ошибку, но безуспешно.

Я использую базу данных mysql для хранения значений.

Я продолжаю получать сообщение об ошибке от com.example.springboot.Recipe file.

Это файл рецепта Springboot

package com.example.springboot;
import com.example.springboot.Recipe;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import  javax.validation.constraints.NotNull;

@Entity // This tells Hibernate to make a table out of this class

public class Recipe {

    public Recipe(){

    }

    public Recipe(Integer id, String name, String description, String type, Integer preptime, Integer cooktime, String content, Integer difficulty){
        this.id = id;
        this.name = name;
        this.description = description;
        this.type = type;
        this.preptime = preptimee;
        this.cooktime = cooktime;
        this.content = content;
        this.difficulty = difficulty;
    }

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;


    private String name;


    private String description;


    private String type;


    private Integer preptime;


    private Integer cooktime;


    @Column(columnDefinition = "TEXT")
    private String content;

    private Integer difficulty;






    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTitle() {
        return name;
    }

    public void setTitle(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Integer getDifficulty() {
        return difficulty;
    }

    public void setDifficulty(Integer difficulty) {
        this.difficulty = difficulty;
    }

    public Integer getCookingtime() {
        return cooktime;
    }

    public void setCookingtimeime(Integer cooktime) {
        this.cooktime = cooktime;
    }

    public Integer getPreparationtime() {
        return preptime;
    }

    public void setPreparationtime(Integer preptime) {
        this.preptime = preptime;
    }
}

Main Controller:
@PutMapping("/recipes/edit/{id}")
    void updateRecipe2(@PathVariable int id, @RequestBody Recipe recipe ) {

        Recipe recipe_ = recipeRepository.findById(id).get();
        recipe_.setTitle(recipe.getTitle());


        System.out.println("sss " + recipe.getname());



        System.out.println("change");
        recipeRepository.save(recipe_);
    }

service.ts:

updateRecipe2 (id: number, recipe: any): Observable<any > {
    const url = `${this.usersUrl}/edit/${id}`;
  return this.http.put(url ,recipe);
}

, где вызывается updateRecipe2:

 save(): void {
    const id = +this.route.snapshot.paramMap.get('name');
     this.recipeService.updateRecipe2(id, this.recipes)
       .subscribe(() => this.gotoUserList());

   }

как только пользователь нажимает сохранить, эта функция сохраняет сделанные изменения. Я надеюсь, что предоставленных мною фрагментов кода достаточно, чтобы помочь решить проблему. Заранее спасибо.

Я создаю API отдыха с пружинной загрузкой и использую angularjs в качестве внешнего интерфейса. Я довольно новичок в веб-разработке.

1 Ответ

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

Вы отправляете список рецептов конечной точке API, которая ожидает один объект рецепта.

Ваши варианты:

  • Отправка только одного объекта рецепта на время, например:

    this.recipeService.updateRecipe2(id, this.recipes[0])
    
  • ИЛИ: создать новую конечную точку API, чтобы принимать список рецептов, редактировать их в «пакете»

    @PutMapping("/recipes/edit")
    void updateRecipes(@RequestBody List<Recipe> recipe ) {
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...