首页 > 解决方案 > 如何将 java.util.ArrayList 类型化为 com.mongodb.basicdbobject

问题描述

 public void process(FeedExchange exchange) {
    List<BasicDBObject> defaultNavigation = (List<BasicDBObject>) exchange.getInput();
    Set<String> navigationIdList = exchange.getProperty("navigationIdList", HashSet.class);
    if (navigationIdList == null) {
      navigationIdList = new HashSet<>();
    }
    for (BasicDBObject basicDBObject : defaultNavigation) {
      String key = ((BasicDBObject)basicDBObject.get("_id")).getString("identifier");
      navigationIdList.add(key);
    }
    exchange.setProperty(FeedExchangeConstants.DEFAULT_NAVIGATION_LIST, defaultNavigation);

    if (!navigationIdList.isEmpty()) {
      exchange.setProperty("navigationIdList", navigationIdList);
      exchange.setProperty("navigationIdString", "\"" + StringUtils.join(navigationIdList, "\",\"") + "\"");
    }
  }

为了为上述代码编写 junit 测试用例,我需要将输入传递给我的测试用例的默认导航

public class GetDefaultNavigationTest {

  @Test
  public void testDefaultNavigation() throws Exception {
    String resourceName = "GetDefaultNavigationResponse.json";
    ClassLoader classLoader = getClass().getClassLoader();
    File file = new File(classLoader.getResource(resourceName).getFile());
    String absolutePath = file.getAbsolutePath();
    System.out.println(absolutePath);
    BufferedReader reader = new BufferedReader(new FileReader(file));
    Gson gson = new Gson();
    Map<String, Object> map = gson.fromJson(reader, Map.class);
    System.out.println(map);

    BasicDBObject defaultNavigation = new BasicDBObject(map);
    System.out.println(defaultNavigation.toJson());
    FeedExchange exchange = new FeedExchange();
    exchange.setInput(Collections.singletonList(defaultNavigation));
    exchange.setProperty("defaultNavigationList", defaultNavigation);
    exchange.setProperty("defaultNavigation", Collections.singletonList(defaultNavigation));
}

我的 Json 文件是 GetDefaultNavigationResponse.json { "_id" : [{ "collection_id" : "1234", "project_id" : "5527", "version_id" : "default", "identifier" : "53573" }] }

我有以下错误 java.util.arraylist 无法转换为 com.mongodb.basicdbobject。如何将数组列表转换为 basicdbobject.im 初学者到 java 和 mongodb。任何帮助将不胜感激

标签: javamongodbjunitcasting

解决方案


推荐阅读