diff --git a/jsonopt.m b/jsonopt.m
index 4b541d33a3e81e38583ed126918e83681a2afc78..80c0e1c7d36881c65cab0592d02b2c8682bd14ca 100644
--- a/jsonopt.m
+++ b/jsonopt.m
@@ -26,7 +26,10 @@ function val=jsonopt(key,default,varargin)
 val=default;
 if(nargin<=2) return; end
 opt=varargin{1};
-if(isstruct(opt) && isfield(opt,key))
-    val=getfield(opt,key);
+if(isstruct(opt))
+    if(isfield(opt,key))
+       val=getfield(opt,key);
+    elseif(isfield(opt,lower(key)))
+       val=getfield(opt,lower(key));
+    end
 end
-
diff --git a/varargin2struct.m b/varargin2struct.m
index 43c27af4d5acc88deb8c3f8055e271461fc4babf..d413013c9058b198700c93c1cb2d49053b9c9849 100644
--- a/varargin2struct.m
+++ b/varargin2struct.m
@@ -30,7 +30,7 @@ while(i<=len)
     if(isstruct(varargin{i}))
         opt=mergestruct(opt,varargin{i});
     elseif(ischar(varargin{i}) && i<len)
-        opt=setfield(opt,varargin{i},varargin{i+1});
+        opt=setfield(opt,lower(varargin{i}),varargin{i+1});
         i=i+1;
     else
         error('input must be in the form of ...,''name'',value,... pairs or structs');