diff --git a/Text/JSON/Escape.hs b/Text/JSON/Escape.hs
--- a/Text/JSON/Escape.hs
+++ b/Text/JSON/Escape.hs
@@ -16,7 +16,8 @@
 
 
 {-| Class of JSON escapable text. The solidus (@/@) is always escaped, as are
-    all ASCII control characters. Non-ASCII control characters 
+    all ASCII control characters. Non-ASCII control characters and Unicode
+    printable characters above ASCII are left as is.
  -}
 class Escape t where
   escape                    ::  t -> t
diff --git a/Text/JSONb/Decode.hs b/Text/JSONb/Decode.hs
--- a/Text/JSONb/Decode.hs
+++ b/Text/JSONb/Decode.hs
@@ -62,7 +62,10 @@
 object                       =  do
   char '{'
   whitespace
-  Object . Trie.fromListS <$> properties []
+  Object . Trie.fromListS <$> choice
+    [ whitespace >> char '}' >> return []
+    , properties []
+    ]
  where
   properties acc             =  do
     key                     <-  string_literal
@@ -86,7 +89,10 @@
 array                       ::  Parser JSON
 array                        =  do
   char '['
-  Array <$> elements []
+  Array <$> choice
+    [ whitespace >> char ']' >> return []
+    , elements []
+    ]
  where
   elements acc               =  do
     something               <-  json
diff --git a/json-b.cabal b/json-b.cabal
--- a/json-b.cabal
+++ b/json-b.cabal
@@ -1,5 +1,5 @@
 name                          : json-b
-version                       : 0.0.3
+version                       : 0.0.4
 category                      : Text
 license                       : BSD3
 license-file                  : LICENSE
diff --git a/test/SimpleUnits.hs b/test/SimpleUnits.hs
--- a/test/SimpleUnits.hs
+++ b/test/SimpleUnits.hs
@@ -98,6 +98,10 @@
 structure_tests =
   [ ( "[ 7, 6 ]", (JSONb.Array . fmap JSONb.Number) [7, 6]
     , ["array", "excessive spacing", "integers"] )
+  , ( "[]", JSONb.Array []
+    , ["array", "compact spacing", "empty"] )
+  , ( "[ ]", JSONb.Array []
+    , ["array", "normal spacing", "empty"] )
   , ( "[7,6]", (JSONb.Array . fmap JSONb.Number) [7, 6]
     , ["array", "compact spacing", "integers"] )
   , ( "[7.6, 21]", (JSONb.Array . fmap JSONb.Number) [7.6, 21.0]
@@ -122,6 +126,10 @@
         , ( Strict.pack "Build"
           , JSONb.String (Strict.pack "e605_core_Bundled_8000231_R1") ) ]
     , ["object", "newlines", "strings"] )
+  , ( "{}", JSONb.Object empty
+    , ["object", "compact spacing", "empty"] )
+  , ( "{ }", JSONb.Object empty
+    , ["object", "normal spacing", "empty"] )
   , ( "{\"Ack\":\"Success\",\"Build\":\"e605_core_Bundled_8000231_R1\"}"
     , (JSONb.Object . fromList)
         [ (Strict.pack "Ack", JSONb.String (Strict.pack "Success"))
