【问题标题】:Appcelerator - Converting circular structure to JSONAppcelerator - 将循环结构转换为 JSON
【发布时间】:2016-06-21 09:18:07
【问题描述】:

我在将 JSON 转换为字符串时遇到问题。在 iOS 上一切正常,但在 Android 上我有这个错误:

[ERROR] :  TiExceptionHandler: (main) [2,20592] - Message: Uncaught TypeError: Converting circular structure to JSON

这是我的代码:

var args = $.args

var data = args.data;
var oferta = data.oferta;
var params = data.params;
var parent = args.parent;

//INSERT
var producto = Alloy.createModel('Producto', {
  oferta_id: parseInt(oferta.id),
  data: JSON.stringify(args) //ERROR
});

传递给控制器​​的参数是这样的:

var args = {
   data: 
   { 
      oferta: {id: 5}, 
      params:{id_opcion_precio: 3445}
   },
   parent: {}
}

怎么了??为什么在 iOS 上运行良好???

【问题讨论】:

  • 为什么需要 JSON.stringify?看看这个答案:stackoverflow.com/questions/4816099/…
  • 因为我想将此 JSON 保存在 db 表的文本字段中
  • 我之前看过上面的答案,我认为不是我的情况。我看不到答案中的圆形结构
  • 奇怪的是,在 iOS 上可以完美运行,如果 args 是一个循环结构,它也应该在 iOS 上。
  • 好的,我不使用模块,只使用数据库。尝试在传递参数时采用更直接的方法,而不是为一个特定的 id 或值创建变量。 '传递给控制器​​的参数如下:'之后的代码在模型内部吗?

标签: json appcelerator titanium-android


【解决方案1】:

不确定为什么要对args 进行字符串化。创建模型时尝试使用JSON.stringify(args.data)

我猜你会遇到同样的问题,只是在如下日志语句中对args 进行字符串化:console.log(JSON.stringify(args))

我在尝试将整个事件(例如从 ti.map)写入控制台时遇到了类似的问题。有些东西让它崩溃了——我假设向数据中添加了一些你看不到的属性。

【讨论】:

  • 最后我解决了我的问题:'JSON.stringify({data: data, parent: parent})' 这行得通,我不知道为什么,但行得通
  • 好的,和我在事件中遇到的类似的经历。必须添加一些我们看不到的东西;-)
【解决方案2】:

最后我解决了我的问题:

JSON.stringify({data: data, parent: parent});

这行得通,我不知道为什么,但行得通

【讨论】:

    猜你喜欢
    • 2016-01-11
    • 2017-04-03
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 2018-10-05
    • 2016-01-22
    相关资源
    最近更新 更多