JSON.stringify忽略了我的嵌套对象

时间:2015-03-25 11:26:09

标签: javascript android json titanium titanium-alloy

我有一个简单的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并将其保留为虚拟信息时仍然不包含它。

2 个答案:

答案 0 :(得分:1)

你必须在嵌套对象中实现toJSON()函数才能正确地将它们序列化为JSON格式

更多信息here

答案 1 :(得分:0)

您需要将userLocation定义为对象 例如:

  var userLocation =[];

然后设置lat& lon作为对象中的项目>

 userLocation [0]=0 ;//as lat
    userLocation [1]=0;//as lon