[英]How to circumvent JSON.stringify returning undefined in a special case and that way creating an string failing for JSON.parse?
[英]How to parse special string as JSON?
我有一个字符串如下:
"{'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()
方法进行解析总是更好。
{"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);
尝试这个 :
将所有单引号( '
)替换为双引号( "
)。
var s={
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:EPSG::3857"
}
}
JavaScript函数JSON.parse(text)
可用于将JSON文本转换为JavaScript对象:
var j=JSON.parse(x);
现在,变量j具有JavaScript对象。
有效的JSON是:
var text = '{"type": "name", "properties": {"name":"urn:ogc:def:crs:EPSG::3857"}}';
var obj = JSON.parse(text);
如果要避免eval
并且不想格式化JSON.parse
的字符串,可以尝试:
var jsonStr = "{'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::3857'}}";
var jsonFn = new Function("return "+jsonStr);
var json = jsonFn();
或直接:
var json = (new Function("return {'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::3857'}}"))();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.