JSON-parse-Transformed.html - JSON.parse() Value Transformed

Q

How to write a reviver function to transform values while the JSON.parse() function is parsing the JSON text string?

✍: FYIcenter.com

A

Below is a good example on using a reviver function with the JSON.parse() call to transform parsed JSON element values:

<!-- JSON-parse-Transformed.html
     Copyright (c) FYIcenter.com
-->
<html>
<body>
<script type="text/javascript">

function transformer(key, value) {
    if (key == "age") {
       return undefined;
    } else if (key == "group" && value==null) {
       return "Guest";
    } else {
       return value;
    }
}

function parser(str) {
   document.write("\njson = "+str+"\n");
   var obj = JSON.parse(str,transformer);
   for (var prop in obj) {
       document.write(`obj.${prop} = ${obj[prop]}\n`);
   }
}

   document.write("<p>JSON.parse() Reviver to Transform Values:</p>");
   document.write("<pre>");

   parser('{"name": "Joe", "age": 25, "group": null}');
   parser('{"name": "Jay", "age": 55, "group": "VIP"}');
   parser('{"name": "Kim", "age": 30, "group": "Host"}');

   document.write("</pre>");
</script>
</body>
</html>

The transformer() is used as the reviver function in the JSON.parse() call to remove the "age" name value pairs, and to provide a default value "Guest" to the "group" name value pairs.

Open the above code in a Web browser. You see the following output:

JSON.parse() Reviver to Transform Values:

json = {"name": "Joe", "age": 25, "group": null}
obj.name = Joe
obj.group = Guest

json = {"name": "Jay", "age": 55, "group": "VIP"}
obj.name = Jay
obj.group = VIP

json = {"name": "Kim", "age": 30, "group": "Host"}
obj.name = Kim
obj.group = Host

 

Using JSON in JavaScript

⇒⇒JSON Tutorials

2017-09-08, 262👍, 0💬