What is JSON?
• Lightweight data-interchange format
• Compared to XML
• Simple format
• Easy for humans to read and write
• Easy for machines to parse and generate
• JSON is a text format
• Programming language independent
• Uses conventions that are familiar to programmers of the C-
family of languages, including C, C++, C#, Java, JavaScript,
Perl, Python
Why Use JSON over XML ?
• Lighter and faster than XML as on-the-wire data
format.
• JSON objects are typed while XML data is typeless .
• JSON types: string, number, array, boolean.
• XML data are all string .
• Native data form for JavaScript code.
• Data is readily accessible as JSON objects in your JavaScript
code vs. XML data needed to be parsed and assigned to
variables through tedious DOM APIs .
• Retrieving values is as easy as reading from an object property in your JavaScript code .
Where is JSON Used ?
• Represent configuration information.
• Implement communication protocols.
JSON Structures
• A collection of name/value pairs .
• In various languages, this is realized as an object, record,struct, dictionary, hash table, keyed list, or associative array .
• An ordered list of values .
• In most languages, this is realized as an array, vector, list, or sequence .
• These are universal data structures supported by most modern programming languages .
JSON Object Notation
• A JSON object is an unordered set of name/value pairs .
• A JSON object begins with { (left brace) and ends with } (right brace) .
• Each name is followed by : (colon) and the name/value pairs are separated by , (comma) .
JSON and JavaScript
• JSON is a subset of the object literal notation of JavaScript
• JSON can be used in the JavaScript language with no muss or fuss
Example: JSON Object
var myJSONObject = {"data": [
{"name": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"name": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"name": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
• In this example, a JSON JavaScript object is created
containing a single member "data", which contains
an array containing three objects, each containing
"name", "method", and "regex" members
• Members can be retrieved using dot or subscript operators .
myJSONObject.bindings[0].method // "newURI"
Text to Object Conversion in JavaScript code
var myObject = eval('(' + myJSONtext + ')');
• To convert a JSON text into an JSON object, use the eval() function .
• eval() invokes the JavaScript compiler
• Since JSON is a proper subset of JavaScript, the compiler will
correctly parse the text and produce an object structure
Security & JSON Parser
// Include http://www.json.org/json.js
var myObject = myJSONtext.parseJSON();
• eval() can compile and execute any JavaScript .
program, so there can be security issues (cross-site scripting) .
• Use eval() when the source can be trusted .
• When security is a concern - the source cannot be trusted -, it is better to use a JSON parser .
• A JSON parser will only recognize JSON text and so is much safer.
Object to Text Conversion
var myJSONText = myObject.toJSONString();
• You can convert JSON object into JSON text
• JSON does not support cyclic data structure
• Do not give cyclical structures to the JSON stringifier
JSON Tools for Java Developer
• Parser
• Parse JSON text files and convert these to a Java model
• Renderer
• Render a Java representation into text
• Serializer
• Serialize plain POJO clusters to a JSON representation
• Validator
• Validate the contents of a JSON file using a JSON schema
How to Generate/Send JSON Data at the Server Side
• Create JSONObject Java object
• Add name/value pairs using put method
• Convert it to String type using toString method and send it to the client with content-type as "text/xml" or "text/plain"
myString = new JSONObject().put("JSON", "Hello,
World!").toString();
// myString is {"JSON": "Hello, World"}
How to Receive JSON Data at the Client Side
• JSON data is received as a string
• Calling eval() will generate JSON object in JavaScript code
• var JSONdata = eval(req.responseText);
• Once you have JSON object, you can use . notation to access its properties
• var name = JSONdata.name;
• var address = JSONdata.addresses[3];
• var streetname = JSONdata.addresses[3].street;
How to Generate/Send JSON Data at the Client Side
• Create JSON JavaScript object.
• Use "POST" HTTP method in the open method of the XMLHttpRequest object.
• Pass JSON JavaScript object in the send method of XMLHttpRequest object .
var carAsJSON = JSON.stringify(car);
var url = "JSONExample?timeStamp=" + new Date().getTime();
createXMLHttpRequest();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
xmlHttp.send(carAsJSON);
How to Receive JSON Data at the Server Side
• Read the JSON data as a String type
• Create JSONObject Java object from the string
String json = readJSONStringFromRequestBody(request);
//Use the JSON-Java binding library to create a JSON object in Java
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(json);
}
catch(ParseException pe) {
}
No comments:
Post a Comment