当前位置: 首页 > 知识库问答 >
问题:

JSONObject应在路径$中找到属性为[“xxx”]的对象

朱风史
2023-03-14

我已经制作了一个程序来使用第三部分API:我有一个名为:NewsService的服务

@Service
public class NewsService {
    @Autowired
    private NewsRepository newsRepository;
    public List<News> getTopStories() throws Exception{
        RestTemplate restTemplate = new RestTemplate();
        JSONObject news = new JSONObject();
        NewsStories newsentity = new NewsStories();
        List<News> stories = new ArrayList<News>();
        ObjectMapper mapper = new ObjectMapper();
        String getUrl = "https://api.nytimes.com/svc/topstories/v2/home.json?api-key=84e19f8ee1c7489a97481d2ed85af15c";
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<Map> entity = new HttpEntity<Map>(headers);
        ResponseEntity<Map> newsList = restTemplate.exchange(getUrl, HttpMethod.GET, entity, Map.class);
        if (newsList.getStatusCode() == HttpStatus.OK) {
            news = new JSONObject(newsList.getBody());
            newsentity = mapper.readValue(news.toString(),NewsStories.class);
            newsentity.getStories().forEach(stories::add);
        }
        return stories;
    }
}`

我有我的控制器

@RestController
@RequestMapping("/api/")
public class NewsController {
        @Autowired
        NewsService newsService = new NewsService();
        @RequestMapping(value = "/news/topstories", method = RequestMethod.GET)
        public @ResponseBody List<News> getNews() throws Exception {
            return this.newsService.getTopStories();
        }
}`

一切都是好的,然而,当我运行我的测试(我不能改变它由内部审计控制)这里我的测试。

@SpringBootTest
@RunWith(SpringRunner.class)
public class ProjectApplicationTests {
    private MockMvc mockMvc;
    @Autowired
    WebApplicationContext context;
    @Before
    public void setup() {
        mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
    }
    @Test
    public void Newstest_ok() throws Exception {
        mockMvc.perform(get("/api/news/topstories" )).andDo(print())
                .andExpect(status().isOk())
                .andExpect(MockMvcResultMatchers.jsonPath("$.title").exists())
                .andExpect(MockMvcResultMatchers.jsonPath("$.section").exists());
}`

接下来,在运行程序时,我遇到了程序中检查验证Exist()的问题。你能帮帮我吗?下面的日志之后运行测试。

null

`

使用Postman http://localhost:8080/api/news/topstories,我获得了Json数据,状态为200 OK。

共有1个答案

习和通
2023-03-14

根据JSON响应,我们可以看到controller将body作为对象数组返回。

要访问spring MVC测试中的每个对象,请使用以下断言:

.andExpect(jsonPath("[0].title").value("titlevalue0"))
.andExpect(jsonPath("[1].title").value("titlevalue1"))
 类似资料:
  • 我有3个项目,ProjectB,ProjectC。 当我构建ProjectB时,它没有任何问题。但是当我试图构建ProjectA时,它在控制台上出现以下错误而失败。 评估项目“:ProjectB”时出现问题。在项目:ProjectB中找不到路径为:ProjectC的项目。 build.gradle-ProjectC settings.gradle-ProjectC build.gradle - 项

  • 嗨,我在Java用jackson写了一个JSON树解析器。现在我想在JSON中找到每个属性的路径。JSON示例: 此JSON中的路径示例如下: 它具有价值 我编写的解析器获取直接包含一个值(而不是另一个JSON对象)的所有属性。代码如下: 代码的运行方式如下: 结果是: 现在,对于其中的每一个,我都希望获得JSON中的路径。所以: 等等....

  • 问题内容: 任何人都可以解释一下Spring中path属性如何将对象从html形式绑定到Java类。我是Spring Web Framework的新手,请帮忙。 问题答案: 长话短说,使用Java bean约定将path属性绑定到Java属性中。例如以下形式: 以及以下控制器处理程序方法: 如果使用以下属性定义了Student类,则将自动绑定: 规范文档的第8.3节提供了有关JavaBeans对流

  • 我正在写一个Spring MVC,并坚持以下错误: 18:34:44999警告[org.springframework.web.context.support.XmlWebApplicationContext](MSC服务线程1-1)在上下文初始化过程中遇到异常-取消刷新尝试:org。springframework。豆。工厂BeanCreationException:创建名为“org”的bean时

  • 16.2. 找到路径 从命令行运行 Python 代码时,知道所运行代码所在磁盘上的存储位置有时候是有必要的。 这是一个你很难自己弄明白,却一看到就会想起的小麻烦。核心功能来源于 sys.argv。正如你在 第 9 章 XML 处理 中看到的,它包含了很多命令行参数。 当然就像从命令行中运行他们一样,它也同样记录了运行脚本的名字,这些信息足以令我们确定文件的位置。 例 16.3. fullpath

  • 问题内容: 节点中是否有类似“ path.resolve”的API?还是有什么可以做的? 例如(nodejs代码): 应该得到: 问题答案: 解决(表示用户的家)是另一回事,通常是由外壳来解决。。 如果要通过Go代码执行此操作,则可以使用该函数获取有关当前用户的详细信息,包括其主文件夹(即)。但是,您仍然必须自己替换它。 原始答案如下。 您可以使用或。 例如: 输出: 您可以使用和从路径中“删除”