@ruebot Nice detective work! Just to make sure that I understand what you're saying:

This section of Adore-Djatoka code (from OpenURLJP2KMetadata.java):

`StringBuffer sb = new StringBuffer();
sb.append("{");
sb.append("\n\"identifier\": \"" + r.getIdentifier() + "\",");
sb.append("\n\"imagefile\": \"" + r.getImageFile() + "\",");
sb.append("\n\"width\": \"" + r.getWidth() + "\",");
sb.append("\n\"height\": \"" + r.getHeight() + "\",");
sb.append("\n\"dwtLevels\": \"" + r.getDWTLevels() + "\",");
sb.append("\n\"levels\": \"" + r.getLevels() + "\",");
sb.append("\n\"compositingLayerCount\": \"" + r.getCompositingLayerCount() + "\"");
sb.append("\n}");`

...should probably be replaced with something like:

`JSONObject sb = new JSONObject();
sb.put( "identifier", r.getIdentifier());
sb.put( "imagefile", r.getImageFile());
sb.put( "width", r.getWidth());
sb.put( "height", r.getHeight());
sb.put( "dwtLevels", r.getDWTLevels());
sb.put( "levels", r.getLevels());
sb.put( "compositingLayerCount", r.getCompositingLayerCount());`

Correct? Do you believe that this change will: 
* Make the existence of backslashes no longer an issue; or 
* Allow me to isolate the image path better (using something like data->imagefile) so I only replace backslashes in the path alone?