mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Moved JsonBuffer size calculator to https://bblanchon.github.io/ArduinoJson/
This commit is contained in:
		| @@ -1,143 +0,0 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
| <head> | ||||
|     <title>ArduinoJson - JsonBuffer size calculator</title> | ||||
|     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
| </head> | ||||
| <body> | ||||
|     <div class="container"> | ||||
|         <div class="jumbotron"> | ||||
|             <h1>JsonBuffer size calculator</h1> | ||||
|         </div> | ||||
|         <div id='error' class="alert alert-danger" role="alert"> | ||||
|             Please paste your JSON in the "input" box | ||||
|         </div> | ||||
|         <div class="row"> | ||||
|             <div class="col-md-6"> | ||||
|                 <h2>Input</h2> | ||||
|                 <textarea class="form-control" rows=30 id='input'></textarea><br> | ||||
|             </div> | ||||
|             <div id='results' class="col-md-6" style='display:none'> | ||||
|                 <h2>Result</h2> | ||||
|                 <h3>Expression</h3> | ||||
|                 <p><code id='resultexpr'></code></p> | ||||
|                 <table class="table"> | ||||
|                   <thead> | ||||
|                     <th>Platform</th> | ||||
|                     <th>Size (in bytes)</th> | ||||
|                   </thead> | ||||
|                   <tbody> | ||||
|                     <tr> | ||||
|                       <td>AVR 8-bit</td> | ||||
|                       <td id='sizeavr8'></td> | ||||
|                     </tr> | ||||
|                     <tr> | ||||
|                       <td>ESP8266</td> | ||||
|                       <td id='sizeesp8266'></td> | ||||
|                     </tr> | ||||
|                     <tr> | ||||
|                       <td>x86</td> | ||||
|                       <td id='sizex86'></td> | ||||
|                     </tr> | ||||
|                     <tr> | ||||
|                       <td>x64</td> | ||||
|                       <td id='sizex64'></td> | ||||
|                     </tr> | ||||
|                   </tbody> | ||||
|                 </table> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </body> | ||||
| <script type="text/javascript"> | ||||
|     function Recipe() { | ||||
|         var arrays = []; | ||||
|         var objects = []; | ||||
|  | ||||
|         this.addJsonArray = function(size) { | ||||
|             if (arrays[size]) | ||||
|                 arrays[size]++; | ||||
|             else | ||||
|                 arrays[size] = 1; | ||||
|         } | ||||
|  | ||||
|         this.addJsonObject = function(size) { | ||||
|             if (objects[size]) | ||||
|                 objects[size]++; | ||||
|             else | ||||
|                 objects[size] = 1; | ||||
|         } | ||||
|  | ||||
|         this.getExpression = function() { | ||||
|             var elements = []; | ||||
|             for (var size in arrays) { | ||||
|                 var count = arrays[size]; | ||||
|                 if (count > 1) | ||||
|                     elements.push(count + "*JSON_ARRAY_SIZE("+size+")"); | ||||
|                 else | ||||
|                     elements.push("JSON_ARRAY_SIZE("+size+")"); | ||||
|             } | ||||
|             for (var size in objects) { | ||||
|                 var count = objects[size]; | ||||
|                 if (count > 1) | ||||
|                     elements.push(count + "*JSON_OBJECT_SIZE("+size+")"); | ||||
|                 else | ||||
|                     elements.push("JSON_OBJECT_SIZE("+size+")"); | ||||
|             } | ||||
|             return elements.join(" + "); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     function scanJson(recipe, obj) { | ||||
|         if (obj instanceof Array) { | ||||
|             recipe.addJsonArray(obj.length); | ||||
|             for (var i = 0; i<obj.length; i++) | ||||
|                 scanJson(recipe, obj[i]); | ||||
|         } | ||||
|         else if (obj instanceof Object) { | ||||
|             recipe.addJsonObject(Object.keys(obj).length); | ||||
|             for (var key in obj)  | ||||
|                 scanJson(recipe, obj[key]); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     input.oninput = function(e) { | ||||
|         results.style.display = 'none'; | ||||
|         error.style.visibility = 'hidden'; | ||||
|  | ||||
|         try { | ||||
|             var recipe = new Recipe(); | ||||
|             scanJson(recipe, JSON.parse(input.value)); | ||||
|             var expression = recipe.getExpression(); | ||||
|  | ||||
|             resultexpr.innerText = expression; | ||||
|             sizeavr8.innerText = eval( | ||||
|                 "function JSON_ARRAY_SIZE(n) { return 4 + 8*n }" + | ||||
|                 "function JSON_OBJECT_SIZE(n) { return 4 + 10*n }" + | ||||
|                 expression | ||||
|             ); | ||||
|             sizeesp8266.innerText = eval( | ||||
|                 "function JSON_ARRAY_SIZE(n) { return 8 + 12*n }" + | ||||
|                 "function JSON_OBJECT_SIZE(n) { return 8 + 16*n }" + | ||||
|                 expression | ||||
|             ); | ||||
|             sizex86.innerText = eval( | ||||
|                 "function JSON_ARRAY_SIZE(n) { return 12 + 24*n }" + | ||||
|                 "function JSON_OBJECT_SIZE(n) { return 12 + 32*n }" + | ||||
|                 expression | ||||
|             ); | ||||
|             sizex64.innerText = eval( | ||||
|                 "function JSON_ARRAY_SIZE(n) { return 24 + 24*n }" + | ||||
|                 "function JSON_OBJECT_SIZE(n) { return 24 + 32*n }" + | ||||
|                 expression | ||||
|             ); | ||||
|             results.style.display = 'block'; | ||||
|         } | ||||
|         catch (ex) { | ||||
|             error.innerText = "ERROR: " + ex.message; | ||||
|             error.style.visibility = 'visible'; | ||||
|         } | ||||
|     } | ||||
| </script> | ||||
| </html> | ||||
		Reference in New Issue
	
	Block a user