JavaScript Object Notation
- Lightweight, open standard, human-readable, language/platform independent and self-describing text-based designed for storing and transferring structured data.
- This format was specified by Douglas Crockford. <LINK>
- JSON Internet Media type is application/json.
Use Cases:
- Serializing and transmitting structured data over network connection.
- Web Services and API's use JSON format to provide public data.
- Fetch JSON data from a web server, convert it to a JavaScript object, use it to manipulate the UI.
Advantages:
- Easy for computers and humans to read and write.
- Supports tree like Hierarchies in data.
- Can be easily mapped to data structures used by most programming languages (numbers, strings, booleans, nulls, arrays and associative arrays).
- Most programming languages support JSON.
Limitations:
- Capable of representing numbers, booleans, strings, null, and arrays and objects. Doesn't natively support complex data types like functions, regular expressions, dates etc.
- Doesn't have a widely accepted schema for defining and validating the structure of JSON data.
Syntax:
- JSON defines only two data structures: objects and arrays. An object is a set of name-value pairs, and an array is a list of values.
- JSON defines six data types: string, number, object, array, true, false and null.
- Objects are enclosed in braces ({}).
- Name and value in a pair are separated by a colon (:).
- Name-Value pairs are separated by a comma (,).
- Names in an object are strings, whereas values may be of any of the six data types, including another object or an array.
- Arrays are enclosed in brackets ([]), and their values are separated by a comma (,).
- Each value in an array may be of a different type, including another array or an object.
JSON Example:
var emptyObj = {};
var empObj = {eid: '7918', ename: 'Prince', grade: 'T3'};
var empObj = {eid: '7918', ename: 'Prince', grade: 'T3'};
{
"empObjs": [
{ "eid":"7918" , "ename":"pkapoor", "grade":"T2" },
{ "eid":"709" , "ename":"jai", "grade":"T4" },
{ "eid":"13386" , "ename":"rahul", "grade":"T3" }
]
}
"empObjs": [
{ "eid":"7918" , "ename":"pkapoor", "grade":"T2" },
{ "eid":"709" , "ename":"jai", "grade":"T4" },
{ "eid":"13386" , "ename":"rahul", "grade":"T3" }
]
}
Deserialize JSON
- Javascript eval() and JSON Parsor:
<script>
var txt = '{"empObjs":[' +
'{"eid":"7918","ename":"pkapoor" },' +
'{"eid":"709","ename":"jai" },' +
'{"eid":"13386","ename":"rahul" }]}';
var obj = JSON.parse(txt); // var obj = eval ("(" + txt + ")");
var txt = '{"empObjs":[' +
'{"eid":"7918","ename":"pkapoor" },' +
'{"eid":"709","ename":"jai" },' +
'{"eid":"13386","ename":"rahul" }]}';
var obj = JSON.parse(txt); // var obj = eval ("(" + txt + ")");
document.getElementById("eid").innerHTML=obj.employees[1].eid document.getElementById("ename").innerHTML= obj.employees[1].ename </script>
Serialize JSON
- JSON Stringify
- JSON.stringify() outputs JSON strings with all whitespace removed. It makes it more compact for sending around the web.
/* Put this line in above example and print the value. */
var text = JSON.stringify(obj);
var text = JSON.stringify(obj);
JSON vs XML
- JSON is smaller than XML, faster, easier to parse and more human readable format.
- XML is more verbose than JSON, so it's faster to write JSON for humans.
- JavaScript's eval method parses JSON. When applied to JSON, eval returns the described object.
- The Ajax (Asynchronous JavaScript And XML) originally used XML to transmit data between server and browser, but now JSON has become a more popular way to carry Ajax data.
- XML is a tried-and-tested technology and is used in a huge range of applications.
- Doesn't have a widely accepted schema for defining and validating the structure of JSON data.
JSON and Java
Java APIs for JSON processing are easily available and easy to use..
javax.json package - contains reader, writer, model builder interfaces for the object model along with other utility classes and Java types for JSON elements.
javax.json.stream package - contains a parser interface and a generator interface for the streaming model.
Refer to http://docs.oracle.com/javaee/7/tutorial/doc/jsonp001.htm for more details.
javax.json.stream package - contains a parser interface and a generator interface for the streaming model.
Refer to http://docs.oracle.com/javaee/7/tutorial/doc/jsonp001.htm for more details.
JSON and AJAX
The Ajax (Asynchronous JavaScript And XML) originally used XML to transmit data between server and browser, but now JSON has become a more popular way to carry Ajax data.
For Further Reading:
JSONPath
JXON
JSON-LD
JXON
JSON-LD
Reference
http://docs.oracle.com/javaee/7/tutorial/doc/jsonp001.htm#BABEECIB
http://www.json.org/js.html
http://www.youtube.com/watch?v=wbB3lVyUvAM
http://www.json.org/js.html
http://www.youtube.com/watch?v=wbB3lVyUvAM