2 回答
TA贡献1811条经验 获得超4个赞
你这个需求确实挺奇怪的,先假定你要查找的 key 里面没有什么特殊字符,那用正则表达式匹配的话这个函数可以这么写,实际情况要写一个非常严密的正则表达式要复杂一些:
1 2 3 4 5 6 7 8 9 10 11 12 | function getValue( key, str ) {
var m = str.match( new RegExp('"' + key + '"\:"?(.+?)"?[,}]') );
return m ? m[ 1 ] : false; }
var str = '{"success":true,"message":"修改成功"}';
getValue( 'success', str ); // return true
getValue( 'message', str ); // return 修改成功 |
但是按照你的例子来看,你这个字符串是一个合法的 JSON,所以如果是字符串的话,你可以直接使用 JSON 类去解析:
1 2 3 4 5 6 7 | var str = '{"success":true,"message":"修改成功"}';
var res = JSON.parse( str );
alert( res.success ); // true
alert( res.message ); // 修改陈功 |
如果不一定是一个标准的 JSON,或者你的环境还不支持 JSON(比如 IE7或更早的 IE 浏览器),可以通过下面方法将其解析成一个 JS 字面量对象:
1 2 3 4 5 6 7 | var str = '{"success":true,"message":"修改成功"}';
var res = (new Function("return (" + str + ")"))();
alert( res.success );
alert( res.message ); |
添加回答
举报