如何在java中显示用GSON解析的字符串对象时去掉“\”

ncgqoxb0  于 2022-11-06  发布在  Java
关注(0)|答案(2)|浏览(226)

我试图使用GSON得到一个清晰的JSON对象(图书)数组。但是每当我运行下面的代码时:
第一个
我在本地主机(Postman)上得到以下输出:

[
    "{\"id\":1,\"name\":\"One\",\"type\":\"fiction\",\"available\":false}",
    "{\"id\":2,\"name\":\"Two\",\"type\":\"non-fiction\",\"available\":true}",
    "{\"id\":3,\"name\":\"Three\",\"type\":\"fiction\",\"available\":true}",
    "{\"id\":4,\"name\":\"Four\",\"type\":\"fiction\",\"available\":false}",
    "{\"id\":5,\"name\":\"Five\",\"type\":\"non-fiction\",\"available\":true}",
    "null"
]

我的目标是让它看起来像这样:

{"id":1,
  "name":"One",
  "type":"fiction",
  "available":false}",
}

其他的书也是一样。如果你有办法的话,请帮帮我。我会非常感激的!................................................................................................................................................

sirbozc5

sirbozc51#

删除@Override toString()函数,直接将gson().toJson()返回到字符串中。
但是这并不好。你可以定义ArrayList来代替原始数组。所以,

ArrayList<Book> AllBooks;
AllBooks.add(new Book(// add book 1));
AllBooks.add(new Book(// add book 2));
AllBooks.add(new Book(// add book 3));

然后在回购时你可以

return new Gson.toJson(AllBooks);

但是

这不是最佳实践,因为您的图书存储在服务器的RAM上。因此,重新考虑设置数据库来帮助数据关系。事实上,Spring提供了jpa的@Entity来帮助您处理这类事情。当您将图书声明为实体时,例如

@Entity
public class Book {
    private int id;
    private String name;
    private String type;
    private boolean available;
}

您可以创建一个JpaRepository来检索所有数据,例如

@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
}

然后只需调用控制器上的存储库

@GetMapping(path = "/books")
public List<book> getAllBooks() {
    BookRepository bookRepo = new BookRepository();
    List<book> books = bookRepo.findAll();
    return books;
}
dz6r00yl

dz6r00yl2#

你不需要在springboot上返回之前解析到json。springboot会为你做这件事(默认使用Jacksonlib)
请尝试以下操作:

@GetMapping(path = "/books")
    public Book[] getAllBooks() { // return Book[] instead of String []
         bookRepository.bookRepo();
         return bookRepository.bookRepo(); // return all list of books
    }

相关问题