【问题标题】:How to stop json object keys names losing it's doublequotes?如何阻止 json 对象键名丢失其双引号?
【发布时间】:2018-07-16 03:54:31
【问题描述】:

我的 NodeJs 应用程序中有这个功能。

var createChatUser = function(payloadData, callback) {

    console.log(payloadData);
    var user = {
        "username": payloadData.username,
        "password": payloadData.password
    };
    console.log(user);
    Service.ChatService.createUser(user, function(err, data) {
        if (err) {
            console.log(err);
            callback(err);
        } else {
            callback(null, data);
        }
    });
}

在这里,我正在获取包含用户名和密码的有效负载数据。 我将此用户名和密码存储在另一个对象用户中,该对象用户的键名“用户名”和“密码”用双引号括起来。但是当我在控制台上打印这个用户时,我没有在双引号中得到这些键。

{ username: 'testUser', password: 'testUser@123' }

所以,我的问题是我应该怎么做才能在键名中保留这些双引号。 由于格式不受支持,我必须将此对象存储在不接受它的 openfire 中。又怎样?提前致谢。

【问题讨论】:

  • 对象的键几乎总是字符串。当您登录控制台时,每个浏览器都有自己的值表示方式。这并不意味着您的对象发生了变异。因此,当您在控制台中看到引号时,您不必担心引号。它只是让您的日志更具可读性的一种方式。

标签: javascript json node.js key-value


【解决方案1】:

了解对象与其表示之间的区别很重要。听起来您收到的有效负载要么是一个对象,要么是一个您正在解析为对象的 JSON 字符串。当您将对象记录到控制台时,它在控制台中的表示方式取决于控制台。

我必须将此对象存储在 openfire 中,由于格式不受支持,因此不接受它。那怎么办?

听起来 openfire 希望您向它发送 JSON。如果是这样,您可以通过 JSON.stringify 从一个对象创建一个 JSON 字符串:

Service.ChatService.createUser(JSON.stringify(user), function(err, data) {
// ----------------------------^^^^^^^^^^^^^^^----^
    // ...
});

【讨论】:

    【解决方案2】:

    你可以试试这个:

    var user1 = {
    "\"username\"": "Taksu",
    "\"Password\"": "wtf"
    };
    console.log(user1);
    

    如果您需要反斜杠字符,您可以使用“\”添加它们。您可以阅读有关转义序列的更多信息here

    希望对你有帮助!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多