我有一个字符串如下:
"{'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::3857'}}"
我想将此字符串解析为JSON。
我怎样才能做到这一点?
您提供的字符串不是有效的JSON。使用eval()
方法或使其成为有效的JSON和解析有两个选项。
使用eval()
方法:
var obj = eval('(' + "{'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::3857'}}" + ')');
var obj = eval('(' + "{'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::3857'}}" + ')');
console.log(obj);
但是我不喜欢eval()
方法,请参考:不要不必要地使用eval!
或通过将单引号替换为双引号将其转换为有效的JSON:
var obj = JSON.parse("{'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::3857'}}".replace(/'/g,'"'));
var obj = JSON.parse("{'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::3857'}}".replace(/'/g, '"'));
console.log(obj);
仅供参考:上面的代码仅'
在属性名称或值中没有(单引号)的情况下才有效,否则将其替换为"
。在这种情况下,要生成JSON,您需要使用非常复杂的正则表达式。
但是将字符串本身初始化为有效的JSON并使用JSON.parse()
method进行解析总是更好的方法。
{"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG::3857"}}
var obj = JSON.parse('{"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG::3857"}}');
console.log(obj);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句