繁体   English   中英

如何将特殊字符串解析为JSON?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM