[
https://issues.apache.org/jira/browse/FLEX-35297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Piotr Zarzycki updated FLEX-35297:
----------------------------------
Attachment: FlexJSJSONTest.zip
Add example project, which contains compiled sources in folder:
JS: target\javascript\bin\js-debug\
SWF: target\FlexJSTEst-0.8.0-SNAPSHOT.swf
> 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
> Attachments: book_js_with_bindable.png, FlexJSJSONTest.zip
>
>
> 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(k:String):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)