Tools, FAQ, Tutorials:
Call JSON.stringify() with Replacer Function
What is a replacer function that you can provide the JSON.stringify() function call?
✍: FYIcenter.com
The replacer function is an event handler function that is called repeatedly whenever a value, an array element or an object property is stringified during the execution of the JSON.stringify() function.
The replacer function must defined with the following signature:
function any_name(key,value) { ... return some_value | undefined; }
When a value, an array element or an object property is stringified, the replacer function will be called to let you control how the value, the element or the property should be processed:
1. When an object property is processed, the replacer function will be called with "key" argument set to the property name and the "value" argument set to the property value. The object itself can be referred as "this".
If a value is returned, it will be used to replace the property value. If "undefined" returned, this property will be dropped from the Object.
2. When an array element is processed, the replacer function will be called with "key" argument set to the index of the element and the "value" argument set to element value. The array itself can be referred as "this".
If a value is returned, it will be used to replace the element value. If "undefined" returned, this element will be dropped from the Array.
3. When a standalone value, the top level value, is processed, the replacer function will be called with "key" argument set to null and the "value" argument set to the value. The value itself can be referred as "this".
If a value is returned, it will be used to replace the old value. If "undefined" returned, this value will be dropped from the output.
Here is a JavaScript code, JSON-parse-replacer.html, that uses a replacer function to trace the stringifing process of the JSON.stringify() call:
<!-- JSON-stringify-replacer.html Copyright (c) FYIcenter.com --> <html> <body> <script type="text/javascript"> function tracer(key,value) { document.write("parent type-> key, type: value = " +(Object.prototype.toString.call(this))+"-> "+key+", " +(Object.prototype.toString.call(value))+": "+value+"\n"); return value; } function stringifier(val) { var str = JSON.stringify(val,tracer); document.write("str = "+str+"\n"); } document.write("<p>JSON.stringify() Tracing Replacer:</p>"); document.write("<pre>"); val = JSON.parse('["Hello", 3.14, true, ["Jay",25], {"name": "Joe", "age": null}]'); stringifier(val); document.write("</pre>"); </script> </body> </html>
Open the above code in a Web browser. You see the following output:
parent type-> key, type: value = [object Object]-> , [object Array]: Hello,3.14,true,Jay,25,[object Object] parent type-> key, type: value = [object Array]-> 0, [object String]: Hello parent type-> key, type: value = [object Array]-> 1, [object Number]: 3.14 parent type-> key, type: value = [object Array]-> 2, [object Boolean]: true parent type-> key, type: value = [object Array]-> 3, [object Array]: Jay,25 parent type-> key, type: value = [object Array]-> 0, [object String]: Jay parent type-> key, type: value = [object Array]-> 1, [object Number]: 25 parent type-> key, type: value = [object Array]-> 4, [object Object]: [object Object] parent type-> key, type: value = [object Object]-> name, [object String]: Joe parent type-> key, type: value = [object Object]-> age, [object Null]: null str = ["Hello",3.14,true,["Jay",25],{"name":"Joe","age":null}]
⇒ JSON-stringify-Transformed.html - JSON.stringify() Value Transformed
2017-09-08, 2733🔥, 0💬
Popular Posts:
Where can I download the EPUB 2.0 sample book "The Metamorphosis" by Franz Kafka? You can following ...
How to add request body examples to my Azure API operation to make it more user friendly? If you hav...
How to add request URL Template Parameters to my Azure API operation 2017 version to make it more us...
How To Change Text Fonts for Some Parts of a Paragraph? If you want to change text fonts or colors f...
Can Multiple Paragraphs Be Included in a List Item? Yes. You can include multiple paragraphs in a si...