图中选中的粉色“21231”是变化的部分,具体取决于请求参数。
我是新手,在我的学生作业中,我必须在 Spring Boot 中使用 JSON 和 java 来使用各种 Web API 资源。 我的任务之一:我必须从对 Wikipedia API 的请求中获取艺术家描述,其中包含文章的给定名称。在这里,我将文章名称作为请求中的参数:例如“Nirvana_(band)”作为 ={article}(请求中可能还有其他文章名称作为参数):
https://en.wikipedia.org/w/api.php?action=query&format=json&prop=extracts&exintro=true&redirects=true&titles={article}
显示 JSON 响应:如图所示。 这里我只需要提取出图中淡绿色选中的字符串即可: “
Nirvana 是美国摇滚乐......
\n”
如果我想使用 restTemplate.getForObject() 我的问题将在这里:JSON 结构将在标题“21231”方面有所变化(图像上选择的对象为粉红色):我不知道如何映射对此表示反对。
因此我不知道在这种情况下我必须使用什么方法(方法)? (使用这样的 JSON 以便从中获取特定值)。有什么好的建议吗?谢谢!
最佳答案
如果你有一个动态键/值对,你可以使用 Map
-like 结构来映射您的对象,例如:
public class Page {
private int pageId;
private int ns;
private String title;
private String extract;
// Getters, setters, ...
}
public class Query {
private Map<String, Page> pages;
// Getters, setters, ...
}
这将导致 Query
包含 Map<String, Page>
的对象关键是 "21231"
并且该值是适当的 Page
对象。
如果您希望它只包含一个值,您可以使用 Java 8 流:
query.getPages()
.values().stream()
.findAny()
.orElseThrow(() -> new RuntimeException("There is no page"));
或者,您可以创建自己的数据结构(如 PagePair
)并编写自定义反序列化器,但这需要更多工作。
关于java - 如何在 Spring Boot 中使用 Java 通过更改 JSON 结构中的字段名称(如本例所示)从 JSON 响应中提取特定部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49941130/