I convert the JsonObject to String, then parsed them back.
public static JsonObject clone(JsonObject o) {
if (o == null)
return null;
StringWriter buffer = new StringWriter();
JsonWriter writer = Json.createWriter(buffer);
writer.write(o);
writer.close();
return Json.createReader(new StringReader(buffer.toString())).readObject();
}
I look for more elegant method.