[ 
https://issues.apache.org/jira/browse/FLEX-35297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Piotr Zarzycki updated FLEX-35297:
----------------------------------
    Description: 
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}

  was:
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}


> 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
>
>
> 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)

Reply via email to