Two possible options, among a lot of others.
Base64 + byte[]
Send
serialize the Object to byte[].
encode to base64.
ByteArrayOutputStream bos= new ByteArrayOutputStream();
ObjectOutputStream obs = new ObjectOutputStream(bos);
obs.writeObject(yourJavaObject);
obs.flush();
curlStringObj= new String(Base64.encode(bos.toByteArray()));
The curlStringObj string should be the one you send in the curl call.
Receive
decode from base64
deserialize the byte[] to Object
byte b[] = Base64.decode(curlStringObj.getBytes());
ByteArrayInputStream bis= new ByteArrayInputStream(b);
ObjectInputStream ois = new ObjectInputStream(bis);
YourJavaObject receivedJavaObject= (YourJavaObject) ois.readObject();
GSON (Json)
Another option is to serialize it to JSON, for example, using the GSON lib. Probably one of the simplest ways.
Send
Gson gson = new Gson();
String curlStringObj = gson.toJson(yourJavaObject);
Receive
Gson gson = new Gson();
YourJavaObject jObject = gson.fromJson(curlStringObj ,YourJavaObject.class);
Anyway, just take these as examples. Check first the API's specification and convert the object according to it. Hope it helps somehow.