I\'m trying to write function in C# that will converts JSON to a key/value pairs. It should support arrays. So for example the following JSON:
{
title:
The solution for this is as following. JavaScriptSerializer creates object ('o') from json string ('json'), than method BuildVariablesList traverse the object and populates dictionary ('additionalParameters') that contains results.
var jss = new JavaScriptSerializer();
var o = return new DynamicJsonObject(jss.Deserialize>(json));
var additionalParameters = new Dictionary();
BuildVariablesList(o.GetInternalDictionary(), "", additionalParameters);
private static string AppendToPathString (string path, object part )
{
return path.Trim().Length == 0 ? part.ToString() : path + '.' + part;
}
public static void BuildVariablesList(object obj, string path, Dictionary result)
{
if ( obj is ArrayList)
{
var arrayObj = obj as ArrayList;
for (var i = 0; i)
{
var dictObject = obj as Dictionary;
foreach (var entry in dictObject)
{
if (entry.Value is String && (path.Trim().Length > 0 || !ReservedFieldNames.Contains( entry.Key.ToLower())))
{
result.Add(AppendToPathString(path,entry.Key), entry.Value as String);
}
else if (entry.Value is Dictionary)
{
BuildVariablesList(entry.Value as Dictionary, AppendToPathString(path, entry.Key), result);
}
else if (entry.Value is ArrayList)
{
BuildVariablesList(entry.Value as ArrayList, AppendToPathString(path, entry.Key), result);
}
}
}
}