From 0062759f759f1cb5e531b133dd01cdef786c3da9 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 26 Mar 2014 15:29:46 +0100 Subject: [PATCH] Use native JSON.parse function --- src/ol/browserfeature.js | 9 +++++++++ src/ol/format/jsonfeatureformat.js | 8 +++++++- src/ol/source/vectorfilesource.js | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index d05fb9f25c..976fac1413 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -151,6 +151,15 @@ ol.BrowserFeature.HAS_DOM = ol.ENABLE_DOM; ol.BrowserFeature.HAS_GEOLOCATION = 'geolocation' in goog.global.navigator; +/** + * @const + * @type {boolean} + * @todo stability experimental + */ +ol.BrowserFeature.HAS_JSON_PARSE = + 'JSON' in goog.global && 'parse' in goog.global.JSON; + + /** * True if browser supports touch events. * @const diff --git a/src/ol/format/jsonfeatureformat.js b/src/ol/format/jsonfeatureformat.js index 9e2e3f9417..2b06156a79 100644 --- a/src/ol/format/jsonfeatureformat.js +++ b/src/ol/format/jsonfeatureformat.js @@ -2,6 +2,7 @@ goog.provide('ol.format.JSONFeature'); goog.require('goog.asserts'); goog.require('goog.json'); +goog.require('ol.BrowserFeature'); goog.require('ol.format.Feature'); goog.require('ol.format.FormatType'); @@ -26,7 +27,12 @@ ol.format.JSONFeature.prototype.getObject_ = function(source) { if (goog.isObject(source)) { return source; } else if (goog.isString(source)) { - var object = goog.json.parse(source); + var object; + if (ol.BrowserFeature.HAS_JSON_PARSE) { + object = /** @type {Object} */ (JSON.parse(source)); + } else { + object = goog.json.parse(source); + } return goog.isDef(object) ? object : null; } else { goog.asserts.fail(); diff --git a/src/ol/source/vectorfilesource.js b/src/ol/source/vectorfilesource.js index e961badd3a..885a69335a 100644 --- a/src/ol/source/vectorfilesource.js +++ b/src/ol/source/vectorfilesource.js @@ -115,7 +115,7 @@ ol.source.VectorFile.prototype.handleXhrIo_ = function(event) { source = xhrIo.getResponse(); goog.asserts.assertInstanceof(source, ArrayBuffer); } else if (type == ol.format.FormatType.JSON) { - source = xhrIo.getResponseJson(); + source = xhrIo.getResponseText(); } else if (type == ol.format.FormatType.TEXT) { source = xhrIo.getResponseText(); } else if (type == ol.format.FormatType.XML) {