我有一个简单的javascript对象,其中包含一些设备信息,包括最后已知的地理位置(仅限经度和纬度)。我正在使用JSON.stringify将此对象转换为JSON,但我所拥有的一个不是布尔/文本/数字的变量将被忽略。
exports.CallContext = function() {
var deviceId;
var applicationId;
var userLocation = {lat:0, lon:0};
var operatingSystem;
this.create = function(b) {
this.deviceId = Titanium.Platform.id;
this.applicationId = Alloy.Globals.appId;
Titanium.Geolocation.getCurrentPosition(function(e) {
if(e.error) {
Ti.API.info(e.error);
} else {
this.userLocation = {lat:e.coords.latitude, lon:e.coords.longitude};
}
});
this.operatingSystem = Titanium.Platform.version;
};
};
执行JSON.stringify(myCallContext);
之后,我获得了一个带有deviceId,applicationId和operatingSystem(等等,有些省略)的JSON对象,不知道它为什么不包含userLocation。尝试将其转换为数组,但仍无法正常工作,并且当我摆脱getCurrentLocation并将其保留为虚拟信息时仍然不包含它。
答案 0 :(得分:1)
你必须在嵌套对象中实现toJSON()函数才能正确地将它们序列化为JSON格式
更多信息here
答案 1 :(得分:0)
您需要将userLocation定义为对象 例如:
var userLocation =[];
然后设置lat& lon作为对象中的项目>
userLocation [0]=0 ;//as lat
userLocation [1]=0;//as lon