javascript - 我无法将字符串转换为 JavaScript 对象

标签 javascript json node.js object extend

也许这是一个简单的话题,但我一直在努力,但我无法做到这一点。我想将字符串转换为 JavaScript 对象。从现在起我尝试了多种形式来解决它。我正在使用 Node ,我想发出 AJAX 请求,服务器端必须获取请求变量并转换为 javascript 对象(以使用其他对象进行扩展)。我向您展示我的代码是如何的:

<小时/>

客户端

var data = '{"addresses":"hola"}';
// make more and more. 
makeTheRequest("POST",'users/update',"param="+JSON.stringify(data),'json',onSuccess, onError);

服务器

var param = eval('{' + req.body.param + '}');
console.log("\nuser.js-> router.post-> eval: " + param);
console.log("\nuser.js-> router.post-> req.param: " + req.body.param);
console.log("\nuser.js-> router.post-> JSON.parse: " + JSON.parse(req.body.param));
console.log("\nuser.js-> router.post-> user: " + req.session.user);
/*TODO: save on the database.... and more*/
res.send({success:0, error:1, result:"No USER. No SESSION"});

最终服务器日志结果

user.js-> router.post-> eval: {"addresses":"hola"}  
user.js-> router.post-> req.param: "{\"addresses\":\"hola\"}"  
user.js-> router.post-> JSON.parse: {"addresses":"hola"}  
user.js-> router.post-> user: [object Object]  
<小时/>

我想做的是调用 exentd 函数来合并两个对象,例如:req.session.user =extend(false, req.session.user, param);,但参数的处理方式就像一个逐字母的数组 -> 1:{, 2:", 3:a, 4:d, 5:d, 6:r, 7:e, 8:s, 9:s.. 。 知道我做错了什么吗? 非常感谢。

最佳答案

您将数据编码为 JSON 两次(在您的示例中,data 是包含 JSON 的字符串),因此您必须解析两次。更好的解决方案是只编码一次并解析一次。

事实

console.log("\nuser.js-> router.post-> JSON.parse: " + JSON.parse(req.body.param));

产生

user.js-> router.post-> JSON.parse: {"addresses":"hola"}

告诉你JSON.parse的返回值仍然是一个字符串(包含JSON),而不是一个对象。

关于javascript - 我无法将字符串转换为 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26240900/

相关文章:

javascript - 使用大量 jQuery 调用缩小页面上的 JavaScript 性能问题?

javascript - Sequelize : Query same join table with different conditions

javascript - 使用 Javascript 连接到 MongoDB

node.js - 适用于 NodeJS 的 Firebase 动态链接构建器 API

javascript -/n 不显示为换行符

javascript - Kendo UI 自动完成、名称搜索

javascript - Javascript 中嵌套 if 语句(函数内)的问题

ios - 如何使用 JSONJoy 解析可选的 JSON 对象?

python - 从 json 字符串中读取数据并使用 python 对其进行操作

javascript - 如何修复基于 JSON 响应的 React 组件填充?