@@ -112,9 +112,16 @@ public ValueContainer()
112112 _value = null ;
113113 }
114114
115- public ValueContainer ( JToken json )
115+ public ValueContainer ( JToken json , IExpressionEngine expressionEngine = null )
116116 {
117- var v = JsonToValueContainer ( json ) ;
117+ if ( json == null )
118+ {
119+ _type = ValueType . Null ;
120+ _value = null ;
121+ return ;
122+ }
123+
124+ var v = JsonToValueContainer ( json , expressionEngine ) ;
118125 _type = v . _type ;
119126 _value = v . _value ;
120127 }
@@ -222,24 +229,26 @@ public Dictionary<string, ValueContainer> AsDict()
222229 throw new PowerAutomateMockUpException ( "Can't get none object value container as dict." ) ;
223230 }
224231
225- private ValueContainer JsonToValueContainer ( JToken json )
232+ private ValueContainer JsonToValueContainer ( JToken json , IExpressionEngine expressionEngine )
226233 {
227234 switch ( json )
228235 {
229- case JObject jObject :
236+ case JObject _ :
230237 {
231238 var dictionary = json . ToDictionary ( pair => ( ( JProperty ) pair ) . Name , token =>
232239 {
233- if ( token . Children ( ) . Count ( ) != 1 ) return JsonToValueContainer ( token . Children ( ) . First ( ) ) ;
240+ if ( token . Children ( ) . Count ( ) != 1 )
241+ return JsonToValueContainer ( token . Children ( ) . First ( ) , expressionEngine ) ;
234242
235243 var t = token . First ;
236244 return t . Type switch
237245 {
238- JTokenType . String => new ValueContainer ( t . Value < string > ( ) , true ) ,
246+ JTokenType . String => expressionEngine ? . ParseToValueContainer ( t . Value < string > ( ) ) ??
247+ new ValueContainer ( t . Value < string > ( ) ) ,
239248 JTokenType . Boolean => new ValueContainer ( t . Value < bool > ( ) ) ,
240249 JTokenType . Integer => new ValueContainer ( t . Value < int > ( ) ) ,
241250 JTokenType . Float => new ValueContainer ( t . Value < float > ( ) ) ,
242- _ => JsonToValueContainer ( token . Children ( ) . First ( ) )
251+ _ => JsonToValueContainer ( token . Children ( ) . First ( ) , expressionEngine )
243252 } ;
244253 } ) ;
245254
@@ -260,7 +269,8 @@ private ValueContainer JsonToValueContainer(JToken json)
260269 JTokenType . Integer => new ValueContainer ( jValue . Value < int > ( ) ) ,
261270 JTokenType . Float => new ValueContainer ( jValue . Value < float > ( ) ) ,
262271 JTokenType . Null => new ValueContainer ( ) ,
263- JTokenType . String => new ValueContainer ( jValue . Value < string > ( ) ) ,
272+ JTokenType . String => expressionEngine ? . ParseToValueContainer ( jValue . Value < string > ( ) ) ??
273+ new ValueContainer ( jValue . Value < string > ( ) ) ,
264274 JTokenType . None => new ValueContainer ( ) ,
265275 JTokenType . Guid => new ValueContainer ( jValue . Value < Guid > ( ) . ToString ( ) ) ,
266276 _ => throw new PowerAutomateMockUpException (
0 commit comments