Quintiq file version 2.0
|
#parent: #root
|
StaticMethod NamedValueToJSON (
|
NamedValue nv
|
) const remote as owning JSONBuilder
|
{
|
TextBody:
|
[*
|
value := nv.GetValue();
|
|
type := null( Type );
|
|
payload := '';
|
if( value.istype( BinaryValue ) )
|
{
|
payload := value.astype( BinaryValue ).AsHexString();
|
type := typeof( BinaryValue );
|
}
|
else if( value.istype( Boolean ) )
|
{
|
payload := BooleanToString::ISOConverter().Convert( value.astype( Boolean ) );
|
type := typeof( Boolean );
|
}
|
else if( value.istype( Char ) )
|
{
|
payload := CharToString::ISOConverter().Convert( value.astype( Char ) );
|
type := typeof( Char );
|
}
|
else if( value.istype( Date ) )
|
{
|
payload := DateToString::ISOConverter().Convert( value.astype( Date ) );
|
type := typeof( Date );
|
}
|
else if( value.istype( DateTime ) )
|
{
|
payload := DateTimeToString::ISOConverter().Convert( value.astype( DateTime ) );
|
type := typeof( DateTime );
|
}
|
else if( value.istype( Duration ) )
|
{
|
payload := DurationToString::ISOConverter().Convert( value.astype( Duration ) );
|
type := typeof( Duration );
|
}
|
else if( value.istype( Key ) )
|
{
|
payload := KeyToString::ISOConverter().Convert( value.astype( Key ) );
|
type := typeof( Key );
|
}
|
else if( value.istype( Number ) )
|
{
|
payload := NumberToString::ISOConverter().Convert( value.astype( Number ) );
|
type := typeof( Number );
|
}
|
else if( value.istype( Real ) )
|
{
|
payload := RealToString::ISOConverter().Convert( value.astype( Real ) );
|
type := typeof( Real );
|
}
|
else if( value.istype( String ) )
|
{
|
payload := value.astype( String );
|
type := typeof( String );
|
}
|
|
// Create result
|
result := JSON::Object();
|
|
result.Add( attribute( NamedValue, Name ).Name(), nv.Name() );
|
if( not isnull( type ) )
|
{
|
json_value := JSON::Object();
|
json_value.Add( typeof( Type ).Name(), type.Name() );
|
json_value.Add( typeof( Value ).Name(), payload );
|
result.Add( typeof( Value ).Name(), json_value );
|
}
|
|
json_children := JSON::Array();
|
traverse( nv.Children(), Elements, child )
|
{
|
json_children.Add( LibOpt_Utility::NamedValueToJSON( child ) );
|
}
|
result.Add( method( NamedValue, Children ).Name(), json_children );
|
|
return & result;
|
*]
|
}
|