Java 8 使用Java8流API解析JSONNode
我正在使用Java读取Salesforce环境中的所有对象,它工作正常,但下面的代码需要10分钟才能将JSON转换为Java ArrayList。我在考虑是否可以使用Java-8流API来并行解析逻辑。以下是我的工作代码,任何建议,谢谢Java 8 使用Java8流API解析JSONNode,java-8,jsonnode,Java 8,Jsonnode,我正在使用Java读取Salesforce环境中的所有对象,它工作正常,但下面的代码需要10分钟才能将JSON转换为Java ArrayList。我在考虑是否可以使用Java-8流API来并行解析逻辑。以下是我的工作代码,任何建议,谢谢 /** * @Desc : Get All available objects(tables) from salesforce * @return : List<SalesforceObject> * */ public List<Sal
/**
* @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;
}
/**
*@Desc:从salesforce获取所有可用对象(表)
*@return:List
* */
公共列表getAllsObjects(){
List listsObject=new ArrayList();
试一试{
//查询销售人员
最终URIBuilder=新的URIBuilder(this.sfAccess.instanceURL);
setPath(appProp.salesforceObjectPath);
final-HttpGet=new-HttpGet(builder.build());
get.setHeader(“授权”、“承载者”+此.sfAccess.token);
final CloseableHttpClient httpclient=HttpClients.createDefault();
最终HttpResponse queryResponse=httpclient.execute(get);
//解析
final ObjectMapper mapper=new ObjectMapper().enable(SerializationFeature.INDENT_输出);
final JsonNode queryResults=mapper.readValue(queryResponse.getEntity().getContent(),JsonNode.class);
System.out.println(查询结果);
//这条线需要-10分钟
addAll(mapper.convertValue(queryResults.get(“sobjects”),newtypereference(){});
返回列表对象;
}捕获(IOE异常){
e、 printStackTrace();
}捕获(URISyntaxException e){
e、 printStackTrace();
}
返回null;
}
您正在查看的
return StreamSupport.stream(queryResults.get("sobjects").spliterator(), true)
.map(sObj -> mapper.convertValue(sObj, SalesforceObject.class))
.collect(Collectors.toList());
请注意,您的并发性仍将受到服务器CPU核心数量的限制。这是哪个库?
JsonNode
来自?com.fasterxml.jackson.databind.JsonNode;queryResults.get(“sobjects”)这行似乎花费了更多的时间。。数据大小约为300KB。这需要更多的时间,因为我正在控制台中打印结果,大小为4MB。。谢谢你的帮助!