我想序列化/字符串化一个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))失败? 当我可以设置值时,重置值,当我尝试查看对象时看不到值。
答案 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
中,UserObject
是getFirstName
函数中的局部变量。它没有存储在对象中,因此序列化对象将不会显示它。
对象中存储的唯一内容是两个函数(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);