REST API Java object deserialization error

I have a java object that is set as process variable, but it I get error when I try to deserialize it using REST API. Here is the error I get

“type”: “ProcessEngineException”,
“message”: "Cannot deserialize object in variable ‘ACTIVITY_TRACKER’: ENGINE-09017 Cannot load class.

the java class is as below. Both the parent and the dependent class implement java.io.Serializable
public class ActivityTracker implements java.io.Serializable {

   public static ArrayList<ActivityInfo> activityList = new ArrayList<ActivityInfo>();




	public void addActivityInfo(ActivityInfo activityInfo){
		this.activityList.add(activityInfo);
		
	}
	
	public void removeActivityInfo(ActivityInfo activityInfo){
		this.activityList.remove(activityInfo);
		
	}

}

I have tried to follow the document to use specific serializer as well when setting the variable.

ObjectValue activityTrackerDataValue = Variables.objectValue(activityTracker)
			  .serializationDataFormat(Variables.SerializationDataFormats.JAVA)
			  .create();
	delegateExecution.setVariable("ACTIVITY_TRACKER", activityTrackerDataValue );

Hi @adat,

The REST API cannot load the classes that are located in your process application. It is recommended to serialize such objects as JSON (i.e. serialization data format application/json) and then only fetch the serialized value via REST API by adding the query parameter deserializeValues=false.

Cheers,
Thorben

1 Like

@thorben

I have the Java POJO object. How to mark that for Json serilalization in camunda?

Thanks @adat

When you set the variable, replace .serializationDataFormat(Variables.SerializationDataFormats.JAVA) by .serializationDataFormat(Variables.SerializationDataFormats.JSON).

2 Likes

To use it in REST API, set serializationDataFormat: "application/json" NOT serializationDataFormat: "JSON"

However, I’m still confused what to put in objectTypeName??? As the JSON object does not have a Java class definition.

UPDATE: Turns out this is very easy, just set e.g.

{"value": "{\"some\": \"JSON\"}", "type": "Json"}

Json is the magic undocumented type (as of 7.14).