Format JSON
The following is the source code in JavaScript to format and indent a JSON string.

Format JSON source code
// formatJson() :: formats and indents JSON string
function formatJson(val) {
	var retval = '';
	var str = val;
	var pos = 0;
	var strLen = str.length;
	var indentStr = '    ';
	var newLine = '<br />';
	var char = '';
	
	for (var i=0; i<strLen; i++) {
		char = str.substring(i,i+1);
		
		if (char == '}' || char == ']') {
			retval = retval + newLine;
			pos = pos - 1;
			
			for (var j=0; j<pos; j++) {
				retval = retval + indentStr;
			}
		}
		
		retval = retval + char;	
		
		if (char == '{' || char == '[' || char == ',') {
			retval = retval + newLine;
			
			if (char == '{' || char == '[') {
				pos = pos + 1;
			}
			
			for (var k=0; k<pos; k++) {
				retval = retval + indentStr;
			}
		}
	}
	
	return retval;
}

Example using Format JSON
// compacted json string stream
{'user': {'id': {'type': 'integer', 'default': '', 'key': 'primary', 'required': true, 'unique': false, 'mapping': 'id', 'value': ''}, 'created_date': {'type': 'timestamp', 'default': 'current_timestamp', 'required': true, 'unique': false, 'mapping': 'created_date', 'value': ''}, 'updated_date': {'type': 'timestamp', 'default': 'current_timestamp', 'required': true, 'unique': false, 'mapping': 'updated_date', 'value': ''}, 'is_active': {'type': 'bit', 'default': 'undefined', 'required': true, 'unique': false, 'mapping': 'is_active', 'value': ''}, 'username': {'type': 'varchar', 'maxlength': 255, 'default': '', 'required': true, 'unique': false, 'mapping': 'username', 'value': ''}}}

// indented & formatted json string for easy readability
{
    'user': {
        'id': {
            'type': 'integer', 
            'default': '', 
            'key': 'primary', 
            'required': true, 
            'unique': false, 
            'mapping': 'id', 
            'value': ''
        }, 
        'created_date': {
            'type': 'timestamp', 
            'default': 'current_timestamp', 
            'required': true, 
            'unique': false, 
            'mapping': 'created_date', 
            'value': ''
        }, 
        'updated_date': {
            'type': 'timestamp', 
            'default': 'current_timestamp', 
            'required': true, 
            'unique': false, 
            'mapping': 'updated_date', 
            'value': ''
        }, 
        'is_active': {
            'type': 'bit', 
            'default': 'undefined', 
            'required': true, 
            'unique': false, 
            'mapping': 'is_active', 
            'value': ''
        }, 
        'username': {
            'type': 'varchar', 
            'maxlength': 255, 
            'default': '', 
            'required': true, 
            'unique': false, 
            'mapping': 'username', 
            'value': ''
        }
    }
}



Ginger CMS
the future of cms, a simple and intuitive content management system ...

ASP.NET MVC Application
best practices like Repository, LINQ, Dapper, Domain objects ...

CFTurbine
cf prototyping engine, generates boilerplate code and views ...

Search Engine LITE
create your own custom search engine for your web site ...

JRun monitor
monitors the memory footprint of JRun engine and auto-restarts a hung engine ...

Validation Library
complete validation library for your web forms ...