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)