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

使用Java流API解析JSONNode

闾丘卓
2023-03-14

我正在使用Java读取Salesforce环境中的所有对象,工作正常,但下面的代码需要10分钟才能将JSON转换为Java ArrayList。我在考虑是否可以使用Java-8流API来并行解析逻辑。以下是我的工作代码,如有任何建议,不胜感激。

/**
 * @Desc : Get All available objects(tables) from salesforce
 * @return : List<SalesforceObject>
 * */
public List<SalesforceObject> getAllsObjects() {

    List<SalesforceObject> listsObject = new ArrayList<SalesforceObject>();

    try {

        // query Salesforce
        final URIBuilder builder = new URIBuilder(this.sfAccess.instanceURL);
        builder.setPath(appProp.salesforceObjectPath);

        final HttpGet get = new HttpGet(builder.build());
        get.setHeader("Authorization", "Bearer " + this.sfAccess.token);

        final CloseableHttpClient httpclient = HttpClients.createDefault();
        final HttpResponse queryResponse = httpclient.execute(get);

        // parse
        final ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
        final JsonNode queryResults = mapper.readValue(queryResponse.getEntity().getContent(), JsonNode.class);
        System.out.println(queryResults);

        // This line takes - 10 mins
        listsObject.addAll(mapper.convertValue(queryResults.get("sobjects"), new TypeReference<List<SalesforceObject>>(){}));

        return listsObject;
    } catch(IOException e) {
        e.printStackTrace();
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }

    return null;
}

共有1个答案

越高峻
2023-03-14

你在看,

return StreamSupport.stream(queryResults.get("sobjects").spliterator(), true)
            .map(sObj -> mapper.convertValue(sObj, SalesforceObject.class))
            .collect(Collectors.toList());

请注意,您的并发仍然会受到服务器CPU内核数量的限制。

 类似资料:
  • 我有这个文件要处理,我正试图找出如何将第二行作为不同的对象来读取。在这一行的末尾,最后一项是公交车的数量。第二行、第四行等应包含idBus和noOfBus,并用逗号分隔。 基于这些课程 我想要一个函数来处理CSV文件中所有公交车和大学线路的列表。它必须使用流API。我不知道这是否可能或如何进行。 当然,可以根据类进行更改,但保留变量,不添加任何额外内容。 我认为最方便的方法是浏览文件,根据两个班级

  • 我在使用jsoup(Java)解析html文档时遇到了一个问题。我正在分析的HTML具有以下格式: 我想在两个“hr”标记之间隔离HTML文本。我正在尝试以下代码: 系统出来println(对象); 但是ArrayList没有包含我想要的内容,我不知道如何解决它。(我是否可以将“hr”标记转换为“hr”文本“/hr”标记)?

  • 问题内容: 我正在尝试使用Java 8 DateTime API解析日期时间字符串。 要解析的字符串包含日期,月份,年份和AM / PM标记,例如。我使用以下模式:并且我希望将解析的LocalDateTime时间部分设置为AM / PM标记或取决于AM / PM标记。 使用以前的API,解析可以使用此模式按预期进行。 但是当我使用Java 8 DateTime API并运行以下代码时: 我得到以下

  • 我有一颗豆子和一条小溪 并且希望对返回TokenBag的另一个对象流的流应用一些中间操作。在这个例子中必须有两个:("a",3),("b",3)和("a",2)。 请把它看作一个非常简单的例子。在现实中,会有比仅仅计算一行中相同的值更复杂的逻辑。事实上,我试图设计一个简单的解析器,它接受一个令牌流并返回一个对象流。 另外,请注意,它必须保持为一个流(没有中间累加),而且在本例中,它必须在一行中真正

  • 问题内容: 我正在尝试使用Gmail API来获取用户的电子邮件,获取邮件的主题和正文,然后将其显示在网页上。我将用它来做其他事情,但这是我遇到的困难。我正在使用Angular.js。 这是我的API调用: 因此,返回我的消息数组及其ID号。很好 调用输出this- 。 不确定是什么,但尝试获取消息有效负载(),结果为。那么,如何获得消息内容? 另外,我假设如果我可以获取消息内容,那么我将不得不对