首页 > 解决方案 > 如何将解析的 JSON 保存到 mongodb 中?

问题描述

我正在尝试将解析的 JSON 插入 MongoDB。我正在解析的类是:

public class News {

    private int totalResults;

    public List<Article> articles;
    //getters and setters

文章:

public class Article {

    private String author;

    private String title;

    private String description;

    private String url;

    //getters and setters

我解析的 JSON 是这样的:

"totalResults": 5,
"articles": [
    {
        "author": "BBC News",
        "title": "Russia swaps prisoners with Ukraine - prosecutor",
        "description": "Oleg Sentsov was convicted in 2015 for plotting and carrying out attacks in a controversial case.",
        "url": "http://www.bbc.co.uk/news/world-europe-49518616"
    },
etc etc etc, for 5 articles.

我必须在解析后立即保存,这是解析代码。

@Service
public class ParseService {

RestTemplate restTemplate = new RestTemplate();

    public News parseFive() {

        final int COUNTER = 5;

        News news = restTemplate.getForObject("https://newsapi.org/v2/top-headlines?sources=bbc-news&apiKey=19acc3a371d145ecb37a093f9985ea21", News.class);

news.setArticles(news.articles.stream().limit(COUNTER).collect(Collectors.toList()));
news.setTotalResults(COUNTER);


return news;
}

MongoDB 连接和保存代码是这样的:

MongoClientURI connectionString = new 
MongoClientURI("mongodb://localhost:27017");
MongoClient mongoClient = new MongoClient(connectionString)
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("newsCollection");

collection.insertOne(new Document("" ,news));

错误:

Fri Aug 30 11:28:13 CEST 2019 出现意外错误(类型=内部服务器错误,状态=500)。找不到类 com.kdmforce.test.models.News 的编解码器。

如果我只是尝试在 insertOne 方法中传递消息,那将是一个错误。如何将完整的新闻解析 json 插入 mongodb?注意:我已经可以与我的 mongodb 数据库建立连接。我只需要插入的代码。感谢大家的努力!

标签: javamongodbcollectionsresttemplate

解决方案


推荐阅读