Serialize / Stringify javascript对象

时间:2018-01-26 16:39:48

标签: javascript stringify

我想序列化/字符串化一个javascript对象,该对象可以使用signalr作为字符串在浏览器之间传递

信号器部分正在工作,因为我可以发送和接收聊天消息。

这是我的简单试验台

> "t"
> "{}"
> "First Name: tony"

这是我收到的结果。

first_half  = s[0:len(s)//2]
second_half = s[len(s)//2 if len(s)%2 == 0 else ((len(s)//2)+1):]

为什么console.log(JSON.stringify(userObject))失败? 当我可以设置值时,重置值,当我尝试查看对象时看不到值。

4 个答案:

答案 0 :(得分:2)

它失败了,因为你只有私有变量。

这是公共财产。

function UserObject() {
  var _firstName = 't';
  this.getFirstName = function () {
    return this.firstName || _firstName;
  }
  this.setFirstName = function (value) {
    this.firstName = value;
  }
}

var userObject = new UserObject();
console.log(userObject.getFirstName());
userObject.setFirstName('tony');
console.log(JSON.stringify(userObject));
console.log("First Name: " + userObject.getFirstName());

答案 1 :(得分:1)

因为您的UserObject没有要序列化的公共字段。

尝试分配给this.firstName

答案 2 :(得分:1)

您的值存储在_firstName中,UserObjectgetFirstName函数中的局部变量。它没有存储在对象中,因此序列化对象将不会显示它。

对象中存储的唯一内容是两个函数(setFirstName#cmakedefine),但JSON不能表示函数。

这就是JSON结果显示空对象的原因。

答案 3 :(得分:0)

这就是我的目标......

    var UserObject = {
        firstName: '',
        lastName: ''
    };
    UserObject.firstName = 'tony';
    var myObjStr = JSON.stringify(UserObject);
    console.log(myObjStr);
    var uo = JSON.parse(myObjStr);
    console.log(uo);