diff --git a/edgraph/nquads_from_json.go b/edgraph/nquads_from_json.go
index a6bb551f480893476667a8454b72fa07ba687072..0419ebd02626d0af53c34e5c077a79fdf9c79567 100644
--- a/edgraph/nquads_from_json.go
+++ b/edgraph/nquads_from_json.go
@@ -166,6 +166,26 @@ func checkForDeletion(mr *mapResponse, m map[string]interface{}, op int) {
 	}
 }
 
+func handleGeoType(val map[string]interface{}, nq *api.NQuad) (bool, error) {
+	_, hasType := val["type"]
+	_, hasCoordinates := val["coordinates"]
+	if len(val) == 2 && hasType && hasCoordinates {
+		b, err := json.Marshal(val)
+		if err != nil {
+			return false, x.Errorf("Error while trying to parse "+
+				"value: %+v as geo val", val)
+		}
+		ok, err := tryParseAsGeo(b, nq)
+		if err != nil && ok {
+			return true, err
+		}
+		if ok {
+			return true, nil
+		}
+	}
+	return false, nil
+}
+
 func tryParseAsGeo(b []byte, nq *api.NQuad) (bool, error) {
 	var g geom.T
 	err := geojson.Unmarshal(b, &g)
@@ -279,23 +299,13 @@ func mapToNquads(m map[string]interface{}, idx *int, op int, parentPred string)
 				continue
 			}
 
-			// Geojson geometry should have type and coordinates.
-			_, hasType := val["type"]
-			_, hasCoordinates := val["coordinates"]
-			if len(val) == 2 && hasType && hasCoordinates {
-				b, err := json.Marshal(val)
-				if err != nil {
-					return mr, x.Errorf("Error while trying to parse "+
-						"value: %+v as geo val", val)
-				}
-				ok, err := tryParseAsGeo(b, &nq)
-				if err != nil {
-					return mr, err
-				}
-				if ok {
-					mr.nquads = append(mr.nquads, &nq)
-					continue
-				}
+			ok, err := handleGeoType(val, &nq)
+			if  err != nil {
+				return mr, err
+			}
+			if ok {
+				mr.nquads = append(mr.nquads, &nq)
+				continue
 			}
 
 			cr, err := mapToNquads(v.(map[string]interface{}), idx, op, pred)
@@ -323,6 +333,16 @@ func mapToNquads(m map[string]interface{}, idx *int, op int, parentPred string)
 					}
 					mr.nquads = append(mr.nquads, &nq)
 				case map[string]interface{}:
+					// map[string]interface{} can mean geojson or a connecting entity.
+					ok, err := handleGeoType(item.(map[string]interface{}), &nq)
+					if  err != nil {
+						return mr, err
+					}
+					if ok {
+						mr.nquads = append(mr.nquads, &nq)
+						continue
+					}
+
 					cr, err := mapToNquads(iv, idx, op, pred)
 					if err != nil {
 						return mr, err
diff --git a/edgraph/server_test.go b/edgraph/server_test.go
index 827ff2462f757a125cbf817ceb1d9bafa424b354..700920285017e25f8b3e7d7381e14a179f1e2225 100644
--- a/edgraph/server_test.go
+++ b/edgraph/server_test.go
@@ -279,11 +279,11 @@ func TestNquadsFromJsonError1(t *testing.T) {
 }
 
 func TestNquadsFromJsonList(t *testing.T) {
-	json := `{"address":["Riley Street","Redfern"],"phone_number":[123,9876]}`
+	json := `{"address":["Riley Street","Redfern"],"phone_number":[123,9876],"points":[{"type":"Point", "coordinates":[1.1,2.0]},{"type":"Point", "coordinates":[2.0,1.1]}]}`
 
 	nq, err := nquadsFromJson([]byte(json), set)
 	require.NoError(t, err)
-	require.Equal(t, 4, len(nq))
+	require.Equal(t, 6, len(nq))
 }
 
 func TestNquadsFromJsonDelete(t *testing.T) {