Convert JSON into C# anonymous type
Converts JSON into C# dynamic anonymous types
by aliashrafx
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/json5/0.5.1/json5.min.js"></script>
<div style="font-size: 25px; font-weight: 400; font-family: sans-serif">
<p>
Your JSON:
</p>
<div>
<textarea id='sourceTextArea' style="width: 500px; height: 200px">
{
"hello": "world",
"howdy": "pardner",
"super": [
"massive",
null,
"black hole",
],
"iowa": 10110,
}
</textarea>
</div>
<div>
<button onclick='convert()'>Convert</button>
</div>
<p>
C# 6 Code:
</p>
<div>
<textarea id='destinationTextArea' style="width: 500px; height: 200px"></textarea>
</div>
</div>
JavaScript
function convert() {
var data = JSON5.parse(sourceTextArea.value);
var converted = convertToDotNet(data, 0);
destinationTextArea.value = converted;
}
function convertToDotNet(data, indent) {
var result = "";
if(data === null) {
result = indentText("null", indent);
} else if (data instanceof Array) {
result += indentText("new object[] {", indent) + "\r\n";
for(var i = 0; i < data.length; i++) {
result += indentText(convertToDotNet(data[i], indent), indent+1) + ",\r\n";
}
result += indentText("}", indent) + "\r\n";
} else if (typeof data === 'object') {
result += indentText("new Dictionary<string, object> {", indent) + "\r\n";
for(var key in data) {
result += indentText("[" + JSON.stringify(key) + "] = " + convertToDotNet(data[key], indent), indent + 1) + ",\r\n";
}
result += indentText("}", indent) + "\r\n";
} else {
result = indentText(JSON.stringify(data), indent);
}
return result;
}
function indentText(text, indent) {
var prefix = ("\t").repeat(indent);
var lines = text.match(/[^\r\n]+/g);
var result = "";
for(var i = 0; i < lines.length; i++) {
result += prefix + lines[i];
if(i < lines.length - 1) {
result += "\r\n";
}
}
return result;
}