/// <summary>
/// Converts a <see cref="JObject"/> to a <see cref="PSObject"/>
/// </summary>
/// <param name="jtoken">The <see cref="JObject"/></param>
/// <param name="objectFormat">The <see cref="ResourceObjectFormat"/></param>
/// <param name="objectType">The type of the object.</param>
internal static PSObject ToPsObject(this JToken jtoken, ResourceObjectFormat objectFormat, string objectType = null)
{
if (jtoken == null)
{
return(null);
}
if (jtoken.Type != JTokenType.Object)
{
return(new PSObject(JTokenExtensions.ConvertPropertyValueForPsObject(propertyValue: jtoken, objectFormat: objectFormat)));
}
var jobject = (JObject)jtoken;
var psObject = new PSObject();
if (jobject.CanConvertTo <Resource <JToken> >())
{
return(jobject.ToResource().ToPsObject(objectFormat));
}
if (!string.IsNullOrWhiteSpace(objectType))
{
psObject.TypeNames.Add(objectType);
}
foreach (var property in jobject.Properties())
{
psObject.Properties.Add(new PSNoteProperty(
name: JTokenExtensions.ConvertToPascalCase(propertyName: property.Name),
value: JTokenExtensions.ConvertPropertyValueForPsObject(propertyValue: property.Value, objectFormat: objectFormat)));
}
return(psObject);
}