in src/PSRule.Rules.Azure/Data/Template/ExpressionHelpers.cs [691:731]
internal static bool TryJObject(object o, out JObject value)
{
value = null;
if (o is JObject jObject)
{
value = jObject;
return true;
}
else if (o is IDictionary<string, string> dss)
{
value = new JObject();
foreach (var kv in dss)
{
if (!value.ContainsKey(kv.Key))
value.Add(kv.Key, JToken.FromObject(kv.Value));
}
return true;
}
else if (o is IDictionary<string, object> dso)
{
value = new JObject();
foreach (var kv in dso)
{
if (!value.ContainsKey(kv.Key))
value.Add(kv.Key, JToken.FromObject(kv.Value));
}
return true;
}
else if (o is IDictionary d)
{
value = new JObject();
foreach (DictionaryEntry kv in d)
{
var key = kv.Key.ToString();
if (!value.ContainsKey(key))
value.Add(key, JToken.FromObject(kv.Value));
}
return true;
}
return false;
}