{"variation":"1600"}
这是对象 把对象转换成字符串 并把前面的英文切割掉的代码
你的意思是只要1600吗?
Fastjson,可以看看,然后通过key 去取value
思路主要是先用JSON.parse将字符串转为对象,然后使用正则表达式匹配对象中的属性,找出函数字符串使用Function对象转为函数。方法如下:
function stringToFunction(obj){ // 将对象中的函数字符串转化为函数
var regex = /^((function\s)|.)([a-zA-Z_][a-zA-Z0-9_]*)\(.*\)\s\{.*\}/ //匹配函数字符串
for(let key in obj){
if(obj[key] instanceof Object){
stringToFunction(obj[key]);
}else{
if(regex.test(obj[key])){ // 是一个函数
try{
let params = obj[key].substring(obj[key].indexOf('(')+1,obj[key].indexOf(')'));
let operation = obj[key].substring(obj[key].indexOf("{")+1,obj[key].length-1);
obj[key] = new Function(params, operation);
}catch(e){
console.log(e)
}
}
}
}
return obj
}
function stringToObject(string){ // 用于替代JSON.parse
let obj = JSON.parse(string); //将字符串转为对象
return stringToFunction(obj) // 将对象中的函数字符串转为函数
}
答案:
可以使用JSON.stringify将对象转换为字符串,然后使用正则表达式删除开头的英文字母部分。代码如下:
let obj = { name: 'test', age: 20 };
let objStr = JSON.stringify(obj); // 把对象转成字符串 objStr = objStr.replace(/^[a-zA-Z]+/, ''); // 删除字符串开头的英文字母部分
console.log(objStr); // {"age":20}
如果需要在函数中实现,可以这样写:
function objToStr(obj) { let objStr = JSON.stringify(obj); objStr = objStr.replace(/^[a-zA-Z]+/, ''); return objStr; }
let obj = { name: 'test', age: 20 };
let objStr = objToStr(obj); console.log(objStr); // {"age":20}
如果对象中有嵌套的对象,可以使用递归方式实现。代码如下:
function objToStr(obj) { let newObj = {}; for (let key in obj) { let val = obj[key]; if (typeof val === 'object') { val = objToStr(val); } newObj[key] = val; } let objStr = JSON.stringify(newObj); objStr = objStr.replace(/^[a-zA-Z]+/, ''); return objStr; }
let obj = { name: 'test', age: 20, child: { name: 'child', age: 5 } };
let objStr = objToStr(obj); console.log(objStr); // {"age":20,"child":{"age":5},"name":"test"}
直接对象取值不行吗,搞那么麻烦
对象.值 + "" 这不就是获取对象的某个值吗