You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flex.apache.org by "Piotr Zarzycki (JIRA)" <ji...@apache.org> on 2017/04/19 21:36:41 UTC
[jira] [Created] (FLEX-35297) JSON.stringify is not working with
object marked by Bindable
Piotr Zarzycki created FLEX-35297:
-------------------------------------
Summary: JSON.stringify is not working with object marked by Bindable
Key: FLEX-35297
URL: https://issues.apache.org/jira/browse/FLEX-35297
Project: Apache Flex
Issue Type: Bug
Components: FlexJS
Affects Versions: Apache FlexJS 0.8.0, Apache FalconJX 0.8.0
Reporter: Piotr Zarzycki
Assignee: Greg Dove
FlexJS is using JSON.stringify to produce json from value objects.
Two general issues has been discovered during development:
1) "stringify" function is not able to parse object which is marked by [Bindable] tag
*Description:*
In the attached example there is class Book which is marked by [Bindable] tag. During parsing we are getting stack trace:
{code}
Uncaught TypeError: Converting circular structure to JSON
at JSON.stringify (<anonymous>)
{code}
This happened cause compiled VO object contains additional properties which "stringify" is not able to parse. (book_js_with_bindable.png)
2) there are differences between swf and js sight in results of parsing by "stringify" function
*JSON.stringify SWF:*
{
"authors":["Kitten","Puppy"],
"date":"Wed Apr 19 14:00:50 GMT-0500 2017",
"doNotHide":99,
"page":0,
"title":"Trump",
"topic":{"name":"Politics"},
"dedication":"Lucy"
}
*JSON.stringify JS:*
{
"topic":{},
"internalDate":"2017-04-19T21:30:27.959Z",
"title":"Trump",
"date":"2017-04-19T21:30:27.959Z",
"authors":["Kitten","Puppy"],
"_dedication":"Lucy"
}
*Expected results:*
1) We should be able to parse object with [Bindable] tag without any issues
2) SWF and JS stringify function should produce exact same json results.
*Proposition:*
- In order to avoid issues above VO should contains "toJSON" function.
Example class with toJSON function:
{code}
[Bindable]
public class Book
{
public var title:String;
public var page:int;
public var date:Date;
public var authors:Array;
public var topic:Topic = new Topic();
public var doNotHide:uint = 99;
private var internalDate: Date = new Date();
private var _dedication:String;
public function get dedication():String
{
return _dedication;
}
public function set dedication(value:String):void
{
_dedication = value;
}
public function toJSON():Object
{
return {title: title,
page: page,
date: date,
authors: authors,
topic: {name: topic.name},
doNotHide: doNotHide,
internalDate: internalDate,
dedication: dedication};
}
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)