Compile JSON files into Javascript Tutorial
Posted by robert | Filed under JavaScript
Just a quick tutorial on how to compile JSON files into a single JavaScript file. This is very easy with GruntJS and the grunt-json plugin.
Grunt JS Setup
If you have never used GruntJS before you probably need to checkout my Install Grunt JS on a Mac Tutorial or Install Grunt JS on Windows Tutorial.
Example Code
To follow along with this tutorial you may want to download the files from https://github.com/codeBelt/Example-JSON-to-Javascript and click the “Download Zip” button.
Grunt File
If you take a look at the json config area you will see some options. Those options are:
- namespace
- The namespace in which the json data will be assigned. (Default: ‘myjson’)
- includePath
- Includes the full path of the file and the extension. By default only the file name is used as the key value. (Default: false)
- processName
- This option accepts a function which takes one argument (filename) and returns a string which will be used as the key for the object. The example below stores all json data on the default JSON_DATA namespace in lowercase letters. (Default: null)
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
//Read the package.json (optional)
pkg: grunt.file.readJSON('package.json'),
// Constants for the Gruntfile so we can easily change the path for
// our environments.
BASE_PATH: '../',
DEVELOPMENT_PATH: '../dev/',
PRODUCTION_PATH: '../prod/',
// The JSON to JavaScript plugin.
json: {
prod: {
options: {
namespace: 'JSON_DATA',
includePath: false,
processName: function(filename) {
return filename.toLowerCase();
}
},
src: ['<%= DEVELOPMENT_PATH %>' + '**/*.json'],
dest: '<%= PRODUCTION_PATH %>' + 'assets/scripts/json.js'
}
}
});
// Loads the necessary tasks for this Grunt file.
grunt.loadNpmTasks('grunt-json');
// Grunt tasks.
grunt.registerTask('default', ['json']);
};
Checkout the grunt-json plugin to learn more about the plugin.
JSON File
The grunt-json plugin will take the following JSON data convert it into a JavaScript Object like in the next example.
{
"name": "Product",
"properties": {
"id": {
"type": "number",
"description": "Product identifier",
"required": true
},
"name": {
"description": "Name of the product",
"type": "string",
"required": true
},
"price": {
"type": "number",
"minimum": 0,
"required": true
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
JSON Converted to JavaScript
Below is what the JavaScript file will look like.
var JSON_DATA = JSON_DATA || {};
JSON_DATA["products"] = {
"name": "Product",
"properties": {
"id": {
"type": "number",
"description": "Product identifier",
"required": true
},
"name": {
"description": "Name of the product",
"type": "string",
"required": true
},
"price": {
"type": "number",
"minimum": 0,
"required": true
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
}
}
};
Now we can used the data like any other JavaScript Object.
console.log( JSON_DATA.products );
Leave me a comment, I love comments.