我正在尝试将此字符串转换为对象。
"JwtBody { user_id: 1, auth_id: 1}"
答案 0 :(得分:5)
“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
}
答案 1 :(得分:0)
您可以使用JSON.parse()吗?
我自己没有使用它,但它看起来像创建一个变量并使用JSON.parse(“string”)将它转换为一个对象。
因此,对于您的示例,它将类似于:
var object = JSON.parse("JwtBody { user_id: 1, auth_id: 1}");
答案 2 :(得分:0)
不完全确定你要做什么。
您可以尝试这样的事情:
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>
答案 3 :(得分:0)
此外,你的javascript字符串是无效的JSON,这意味着它无效的javascript。它应该是这样的:
JSON.parse('{"jwtbody" : { "user_id" : 1, "auth_id" : 1}}');
这将为您提供所需的相应javascript对象。
答案 4 :(得分:0)
如果您无法更改示例中的数据:
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://stackoverflow.com/questions/9637517/parsing-relaxed-json-without-eval
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');
}
答案 5 :(得分:0)
这个类似JSON的字符串可以使用vanilla JavaScript和regex解析:
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);