diff --git a/extension/pages/options.html b/extension/pages/options.html
index e52c2509..062d24c1 100644
--- a/extension/pages/options.html
+++ b/extension/pages/options.html
@@ -72,6 +72,9 @@
Structure
"indentCStyle" - Default false
+
+ "showArraySize" - Default true
+
diff --git a/extension/src/json-viewer/jsl-format.js b/extension/src/json-viewer/jsl-format.js
index 648d6a77..2bbdfe1b 100644
--- a/extension/src/json-viewer/jsl-format.js
+++ b/extension/src/json-viewer/jsl-format.js
@@ -10,12 +10,41 @@ jsl.format = (function () {
function repeat(s, count) {
return new Array(count + 1).join(s);
}
-
+ function getSizeOfArray(jsonString,startingPosition){
+ var currentPosition = startingPosition + 1;
+ var inString = false;
+ var numOpened = 1;
+ try{
+ while (numOpened > 0 && currentPosition < jsonString.length) {
+ var currentChar = jsonString.charAt(currentPosition)
+ switch (currentChar) {
+ case '[':
+ if(!inString){
+ numOpened++;
+ }
+ break;
+ case ']':
+ if(!inString){
+ numOpened--;
+ }
+ break;
+ case '"':
+ inString = !inString;
+ break;
+ }
+ currentPosition++;
+ }
+ return JSON.parse(jsonString.substring(startingPosition,currentPosition)).length;
+ }
+ catch(err){
+ return null;
+ }
+ }
function formatJson(json, options) {
options = options || {};
var tabSize = options.tabSize || 2;
var indentCStyle = options.indentCStyle || false;
-
+ var showArraySize = (typeof options.showArraySize !== "undefined" ? Boolean(options.showArraySize) : true);
var tab = "";
for (var ts = 0; ts < tabSize; ts++) {
tab += " ";
@@ -27,7 +56,6 @@ jsl.format = (function () {
indentLevel = 0,
inString = false,
currentChar = null;
-
for (i = 0, il = json.length; i < il; i += 1) {
currentChar = json.charAt(i);
@@ -36,7 +64,17 @@ jsl.format = (function () {
case '[':
if (!inString) {
if (indentCStyle) newJson += "\n" + repeat(tab, indentLevel);
- newJson += currentChar + "\n" + repeat(tab, indentLevel + 1);
+ if(currentChar === "["){
+ if(showArraySize){
+ var arraySize = getSizeOfArray(json,i);
+ if(arraySize !== null){
+ newJson += "Array[" + arraySize + "]";
+ }
+ }
+ }
+ newJson += currentChar;
+
+ newJson += "\n" + repeat(tab, indentLevel + 1);
indentLevel += 1;
} else {
newJson += currentChar;
diff --git a/extension/src/json-viewer/options/defaults.js b/extension/src/json-viewer/options/defaults.js
index ac534591..d57237c2 100644
--- a/extension/src/json-viewer/options/defaults.js
+++ b/extension/src/json-viewer/options/defaults.js
@@ -16,7 +16,8 @@ module.exports = {
lineWrapping: true,
foldGutter: true,
tabSize: 2,
- indentCStyle: false
+ indentCStyle: false,
+ showArraySize:true
},
style: [
".CodeMirror {",