Dear Friends
I Get List of Nodes, then I can not deserialize json response, I get Error
com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class com.alfresco.client.api.common.representation.ResultPaging<com.alfresco.client.api.core.model.representation.NodeRepresentation>]: can not instantiate from JSON object (need to add/enable type information?)
Here is my code
HttpClient httpClient = HttpClientBuilder.create().build();
HttpGet get = new HttpGet("http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/-shared-/children");
String alfrescoUser = "admin";
String pass = "admin";
UsernamePasswordCredentials creds = new UsernamePasswordCredentials(alfrescoUser, pass);
get.setHeader("Accept", "application/json");
get.setHeader("Content-type", "application/json");
get.setHeader(new BasicScheme().authenticate(creds, get, null));
HttpResponse response = httpClient.execute(get);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != 200)
{
throw new RuntimeException("Failed with HTTP error code : " + statusCode);
}
HttpEntity httpEntity = response.getEntity();
String apiOutput = EntityUtils.toString(httpEntity);
System.out.print(apiOutput);
Long total = null;
ObjectMapper om = new ObjectMapper();
om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ResultPaging<NodeRepresentation> nodes = null;
nodes = om.readValue(apiOutput, new TypeReference<ResultPaging<NodeRepresentation>>() {});
Please, can you Help me?
What is the scenario where you would be remotely calling the Alfresco API (in other words, running from a system other than Alfresco) and then wanting to deserialize JSON objects using classes that you should not have access to (ie, Alfresco's)?
If you are in a remote system you should be deserializing JSON responses into your own POJO's, not trying to reconstruct Alfresco's.
If you are calling the remote API from within Alfresco then you shouldn't be doing that either because you've got access to the native API.
Thank You Jeff
I solve this problem:
I am in a remote system and I create own POJO class - Entry.class, then I extract information
List<EnrtyDTo> entryDTos= new ArrayList<EnrtyDTo>();
ObjectMapper om = new ObjectMapper();
JsonNode jsonNodeRoot = om.readTree(apiOutput);
List<JsonNode> nodes = jsonNodeRoot.findValues("entry");
for (JsonNode node : nodes) {
EnrtyDto entryDTo = om.treeToValue(node, EnrtyDto.class);
entryDTos.add(entryDTo);
}
Thank All
Ask for and offer help to other Alfresco Content Services Users and members of the Alfresco team.
Related links:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.