Index: django/contrib/gis/geos/base.py
===================================================================
--- django/contrib/gis/geos/base.py	(revision 9388)
+++ django/contrib/gis/geos/base.py	(working copy)
@@ -21,6 +21,7 @@
 # try/except since this package may be used outside GeoDjango.
 try:
     from django.contrib.gis.gdal import OGRGeometry, SpatialReference, GEOJSON
+    from django.contrib.gis.gdal.geometries import json_regex
     HAS_GDAL = True
 except:
     HAS_GDAL, GEOJSON = False, False
@@ -30,7 +31,6 @@
 # library.  Not a substitute for good web security programming practices.
 hex_regex = re.compile(r'^[0-9A-F]+$', re.I)
 wkt_regex = re.compile(r'^(SRID=(?P<srid>\d+);)?(?P<wkt>(POINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)[ACEGIMLONPSRUTY\d,\.\-\(\) ]+)$', re.I)
-json_regex = re.compile(r'^\{.+\}$')
 
 class GEOSGeometry(object):
     "A class that, generally, encapsulates a GEOS geometry."
Index: django/contrib/gis/tests/test_geos.py
===================================================================
--- django/contrib/gis/tests/test_geos.py	(revision 9388)
+++ django/contrib/gis/tests/test_geos.py	(working copy)
@@ -102,8 +102,9 @@
         if not HAS_GDAL or not GEOJSON: return
         for g in json_geoms:
             geom = GEOSGeometry(g.wkt)
-            self.assertEqual(g.json, geom.json)
-            self.assertEqual(g.json, geom.geojson)
+            if not hasattr(g, 'not_equal'):
+                self.assertEqual(g.json, geom.json)
+                self.assertEqual(g.json, geom.geojson)
             self.assertEqual(GEOSGeometry(g.wkt), GEOSGeometry(geom.json))
 
     def test01j_eq(self):
Index: django/contrib/gis/tests/geometries.py
===================================================================
--- django/contrib/gis/tests/geometries.py	(revision 9388)
+++ django/contrib/gis/tests/geometries.py	(working copy)
@@ -154,4 +154,20 @@
 json_geoms = (TestGeom('POINT(100 0)', json='{ "type": "Point", "coordinates": [ 100.000000, 0.000000 ] }'),
               TestGeom('POLYGON((0 0, -10 0, -10 -10, 0 -10, 0 0))', json='{ "type": "Polygon", "coordinates": [ [ [ 0.000000, 0.000000 ], [ -10.000000, 0.000000 ], [ -10.000000, -10.000000 ], [ 0.000000, -10.000000 ], [ 0.000000, 0.000000 ] ] ] }'),
               TestGeom('MULTIPOLYGON(((102 2, 103 2, 103 3, 102 3, 102 2)), ((100.0 0.0, 101.0 0.0, 101.0 1.0, 100.0 1.0, 100.0 0.0), (100.2 0.2, 100.8 0.2, 100.8 0.8, 100.2 0.8, 100.2 0.2)))', json='{ "type": "MultiPolygon", "coordinates": [ [ [ [ 102.000000, 2.000000 ], [ 103.000000, 2.000000 ], [ 103.000000, 3.000000 ], [ 102.000000, 3.000000 ], [ 102.000000, 2.000000 ] ] ], [ [ [ 100.000000, 0.000000 ], [ 101.000000, 0.000000 ], [ 101.000000, 1.000000 ], [ 100.000000, 1.000000 ], [ 100.000000, 0.000000 ] ], [ [ 100.200000, 0.200000 ], [ 100.800000, 0.200000 ], [ 100.800000, 0.800000 ], [ 100.200000, 0.800000 ], [ 100.200000, 0.200000 ] ] ] ] }'),
+              TestGeom('GEOMETRYCOLLECTION(POINT(100 0),LINESTRING(101.0 0.0, 102.0 1.0))',
+                       json='{ "type": "GeometryCollection", "geometries": [ { "type": "Point", "coordinates": [ 100.000000, 0.000000 ] }, { "type": "LineString", "coordinates": [ [ 101.000000, 0.000000 ], [ 102.000000, 1.000000 ] ] } ] }',
+                       ),
+              TestGeom('MULTILINESTRING((100.0 0.0, 101.0 1.0),(102.0 2.0, 103.0 3.0))',
+                       json="""
+
+{ "type": "MultiLineString",
+  "coordinates": [
+      [ [100.0, 0.0], [101.0, 1.0] ],
+      [ [102.0, 2.0], [103.0, 3.0] ]
+    ]
+  }
+
+""",
+                       not_equal=True,
+                       ),
               )
Index: django/contrib/gis/tests/test_gdal_geom.py
===================================================================
--- django/contrib/gis/tests/test_gdal_geom.py	(revision 9388)
+++ django/contrib/gis/tests/test_gdal_geom.py	(working copy)
@@ -79,8 +79,9 @@
         if not GEOJSON: return
         for g in json_geoms:
             geom = OGRGeometry(g.wkt)
-            self.assertEqual(g.json, geom.json)
-            self.assertEqual(g.json, geom.geojson)
+            if not hasattr(g, 'not_equal'):
+                self.assertEqual(g.json, geom.json)
+                self.assertEqual(g.json, geom.geojson)
             self.assertEqual(OGRGeometry(g.wkt), OGRGeometry(geom.json))
 
     def test02_points(self):
Index: django/contrib/gis/gdal/geometries.py
===================================================================
--- django/contrib/gis/gdal/geometries.py	(revision 9388)
+++ django/contrib/gis/gdal/geometries.py	(working copy)
@@ -61,7 +61,7 @@
 # Regular expressions for recognizing HEXEWKB and WKT.
 hex_regex = re.compile(r'^[0-9A-F]+$', re.I)
 wkt_regex = re.compile(r'^(?P<type>POINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)[ACEGIMLONPSRUTY\d,\.\-\(\) ]+$', re.I)
-json_regex = re.compile(r'^\{[\s\w,\-\.\"\'\:\[\]]+\}$')
+json_regex = re.compile(r'^(\s+)?\{[\s\w,\[\]\{\}\-\."\':]+\}(\s+)?$')
 
 #### OGRGeometry Class ####
 class OGRGeometry(object):
