2015-03-25 39 views
0

我有一個簡單的JavaScript對象,其中包含一些設備信息,包括最後一次已知的地理位置(僅經度和緯度)。我正在使用JSON.stringify將此對象轉換爲JSON,但我擁有的不是布爾/文本/數字的變量被忽略。JSON.stringify忽略我的嵌套對象

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對象。試圖把它轉換爲數組,並沒有工作,仍然沒有包括它,當我擺脫了getCurrentLocation並讓它與虛擬信息。

+0

通過記錄'this.userLocation'獲得了什麼? – Dragon 2015-03-25 12:16:52

回答

0

您需要定義用戶位置爲對象 例如:

var userLocation =[]; 

,然後設置緯度&經度爲對象的項目EX->

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

我已經這麼做了。我認爲問題在於如何解決Titanium.Geolocation.getCurrentPosition調用,並用'this.userLocation = {lon:fake,lat:fake}'替換它;''它會被序列化。 – 2015-03-25 11:38:33

1

您必須實現內部的toJSON()函數嵌套對象能夠將它們序列化爲JSON格式的正確文件

更多信息here

+0

對不起,不是!我的第一個想法也是。我認爲我的地理位置請求根本不起作用。 – 2015-03-26 09:52:02