我正在尝试将这个字符串转换为对象。
"JwtBody { user_id: 1, auth_id: 1}"
我正在尝试将这个字符串转换为对象。
"JwtBody { user_id: 1, auth_id: 1}"
"JwtBody { user_id: 1, auth_id: 1}" 显然不是标准的 JSON 字符串,您可以尝试这样做。
function strToObj(str){
var obj = {};
if(str&&typeof str ==='string'){
var objStr = str.match(/\{(.)+\}/g);
eval("obj ="+objStr);
}
return obj
}
eval(“JwtBody {user_id:1,auth_id:1}”。replace(/([^}]+?)({.*})/,'$ 1 = $ 2'));
- 结果是一个名为JwtBody的变量,其值为该对象 - Jaromanda Xeval()
是不安全的...如果字符串中包含代码,它将被执行。 - Alexis Wilke你能使用JSON.parse()吗?
我自己没有用过它,但看起来可以创建一个变量并使用JSON.parse("string")将其转换为对象。
因此,对于你的示例,它应该是这样的:
var object = JSON.parse("JwtBody { user_id: 1, auth_id: 1}");
不太确定你想要做什么。
你可以尝试这样做:
var str = '{"user_id": "1", "auth_id": "1"}';
var obj = $.parseJSON(str);
请确保您的jQuery代码如下:
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
1
不需要加引号。实际上,它们很可能不应该加引号。 - Alexis Wilke如果您无法更改示例中的数据:
var parsedData = {};
var str = "JwtBody { user_id: 1, auth_id: 1}";
function getRawJSON(str){
return str.split(' ').map((el, index)=>{return index>0 ? el : ''}).join('');
}
function formatingValidJSON(str){
// From https://dev59.com/OGkw5IYBdhLWcg3wzdtF
return str
.replace(/:\s*"([^"]*)"/g, function(match, p1) {
return ': "' + p1.replace(/:/g, '@colon@') + '"';
})
.replace(/:\s*'([^']*)'/g, function(match, p1) {
return ': "' + p1.replace(/:/g, '@colon@') + '"';
})
.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?\s*:/g, '"$2": ')
.replace(/@colon@/g, ':')
}
str = formatingValidJSON(getRawJSON(str));
try{
parsedData = JSON.parse(str);
console.log('Your parsed data:', parsedData);
}
catch(e){
console.log('Your data is wrong');
}
可以使用原生JavaScript和正则表达式解析此类似JSON的字符串:
var jwtBodyString = "JwtBody { user_id: 1, auth_id: 1}";
`//1 match on only JSON within string
jwtBody = jwtBodyString.match(/{[^}]+}/).toString();`
//2 enclose property names to prevent errors with JSON.parse()
jwtBody = jwtBody.replace(/([a-zA-Z]+):/g,'"$1":'));
//3 obtain object
var myJwtBodyObject = JSON.parse(jwtBody);
使用JSON.parse()函数。
此外,您的JavaScript字符串无效,这意味着它也是无效的JavaScript代码。应该像这样:
JSON.parse('{"jwtbody" : { "user_id" : 1, "auth_id" : 1}}');
JwtBody
,然后使用 JSON.parse()。 - unional