【问题标题】:JSON.stringify is ignoring my nested objectsJSON.stringify 忽略了我的嵌套对象
【发布时间】:2015-03-25 11:26:09
【问题描述】:

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

【问题讨论】:

  • 登录this.userLocation有什么收获吗?

标签: javascript android json titanium titanium-alloy


【解决方案1】:

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

更多信息here

【讨论】:

  • 对不起,不是!我的第一个想法也是。我认为我的地理定位请求根本不起作用。
【解决方案2】:

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

  var userLocation =[];

然后将 lat & lon 设置为对象 ex->

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

【讨论】:

  • 我已经在这样做了。我认为问题与 Titanium.Geolocation.getCurrentPosition 调用有关,因为当我摆脱它并用 this.userLocation = {lon:fake, lat:fake}; 替换它时,它确实会被序列化。
猜你喜欢
  • 2014-05-06
  • 2013-11-07
  • 2013-12-28
  • 2011-11-18
  • 2020-06-04
  • 2013-07-04
  • 2021-01-31
  • 1970-01-01
  • 2019-10-14
相关资源
最近更新 更多