diff --git a/loadbj.m b/loadbj.m
index d5f50cb1c5e49f982a9fa11ca4af6662c63f447e..ac6a5ae789c288494f2d720ad0ec7746cfbd6ca3 100644
--- a/loadbj.m
+++ b/loadbj.m
@@ -150,7 +150,12 @@ function [data, mmap] = loadbj(fname,varargin)
     end
 
     if(jsonopt('JDataDecode',1,varargin{:})==1)
-        data=jdatadecode(data,'Base64',0,'Recursive',1,varargin{:});
+        try
+            data=jdatadecode(data,'Base64',0,'Recursive',1,varargin{:});
+        catch ME
+            warning(['Failed to decode embedded JData annotations, '...
+                'return raw JSON data\n\nError: %s\n%s'], ME.identifier, ME.message);
+        end
     end
 end
 
diff --git a/loadjson.m b/loadjson.m
index 4f89361afad29898d78b4ef500be422aa0ab6358..f704a518c194ce2a3643a93bf4be872cfdb13101 100644
--- a/loadjson.m
+++ b/loadjson.m
@@ -192,7 +192,12 @@ function [data, mmap] = loadjson(fname,varargin)
     end
 
     if(jsonopt('JDataDecode',1,varargin{:})==1)
-        data=jdatadecode(data,'Base64',1,'Recursive',1,varargin{:});
+        try
+            data=jdatadecode(data,'Base64',1,'Recursive',1,varargin{:});
+        catch ME
+            warning(['Failed to decode embedded JData annotations, '...
+                'return raw JSON data\n\nError: %s\n%s'], ME.identifier, ME.message);
+        end
     end
     
     if(isfield(opt,'progressbar_'))