diff --git a/src/WireMock.Net/Serialization/MappingConverter.cs b/src/WireMock.Net/Serialization/MappingConverter.cs index 6731eaf0..21858eb9 100644 --- a/src/WireMock.Net/Serialization/MappingConverter.cs +++ b/src/WireMock.Net/Serialization/MappingConverter.cs @@ -187,50 +187,6 @@ internal class MappingConverter return sb.ToString(); } - private string ConvertJsonToAnonymousObjectDefinition(JToken token, int ind = 0) - { - string FormatObject(JObject jObject) - { - var indStr = new string(' ', 4 * ind); - var indStrSub = new string(' ', 4 * (ind + 1)); - var items = jObject.Properties().Select(x => ConvertJsonToAnonymousObjectDefinition(x, ind + 1)); - return $"new\r\n{indStr}{{\r\n{indStrSub}{string.Join($",\r\n{indStrSub}", items)}\r\n{indStr}}}"; - } - - string FormatArray(JArray jArray, int ind) - { - var hasComplexItems = jArray.FirstOrDefault() is JObject or JArray; - var items = jArray.Select(x => ConvertJsonToAnonymousObjectDefinition(x, hasComplexItems ? ind + 1 : ind)); - if (hasComplexItems) - { - var indStr = new string(' ', 4 * ind); - var indStrSub = new string(' ', 4 * (ind + 1)); - return $"new []\r\n{indStr}{{\r\n{indStrSub}{string.Join($",\r\n{indStrSub}", items)}\r\n{indStr}}}"; - } - - return $"new [] {{ {string.Join(", ", items)} }}"; - } - - return token switch - { - JArray jArray => FormatArray(jArray, ind), - JObject jObject => FormatObject(jObject), - JProperty jProperty => $"{jProperty.Name} = {ConvertJsonToAnonymousObjectDefinition(jProperty.Value, ind)}", - JValue jValue => jValue.Type switch - { - JTokenType.None => "null", - JTokenType.Integer => jValue.Value?.ToString() ?? "null", - JTokenType.Float => jValue.Value?.ToString() ?? "null", - JTokenType.String => $"\"{EscapeCSharpString(jValue.Value?.ToString())}\"", - JTokenType.Boolean => jValue.Value?.ToString().ToLower() ?? "null", - JTokenType.Null => "null", - JTokenType.Undefined => "null", - _ => $"UNHANDLED_CASE: {jValue.Type}" - }, - _ => $"UNHANDLED_CASE: {token}" - }; - } - public MappingModel ToMappingModel(IMapping mapping) { var request = (Request)mapping.RequestMatcher; @@ -536,4 +492,49 @@ internal class MappingConverter return newDictionary; } + + private static string ConvertJsonToAnonymousObjectDefinition(JToken token, int ind = 0) + { + return token switch + { + JArray jArray => FormatArray(jArray, ind), + JObject jObject => FormatObject(jObject, ind), + JProperty jProperty => $"{jProperty.Name} = {ConvertJsonToAnonymousObjectDefinition(jProperty.Value, ind)}", + JValue jValue => jValue.Type switch + { + JTokenType.None => "null", + JTokenType.Integer => jValue.Value?.ToString() ?? "null", + JTokenType.Float => jValue.Value?.ToString() ?? "null", + JTokenType.String => $"\"{EscapeCSharpString(jValue.Value?.ToString())}\"", + JTokenType.Boolean => jValue.Value?.ToString()?.ToLower() ?? "null", + JTokenType.Null => "null", + JTokenType.Undefined => "null", + _ => $"UNHANDLED_CASE: {jValue.Type}" + }, + _ => $"UNHANDLED_CASE: {token}" + }; + } + + private static string FormatObject(JObject jObject, int ind) + { + var indStr = new string(' ', 4 * ind); + var indStrSub = new string(' ', 4 * (ind + 1)); + var items = jObject.Properties().Select(x => ConvertJsonToAnonymousObjectDefinition(x, ind + 1)); + + return $"new\r\n{indStr}{{\r\n{indStrSub}{string.Join($",\r\n{indStrSub}", items)}\r\n{indStr}}}"; + } + + private static string FormatArray(JArray jArray, int ind) + { + var hasComplexItems = jArray.FirstOrDefault() is JObject or JArray; + var items = jArray.Select(x => ConvertJsonToAnonymousObjectDefinition(x, hasComplexItems ? ind + 1 : ind)); + if (hasComplexItems) + { + var indStr = new string(' ', 4 * ind); + var indStrSub = new string(' ', 4 * (ind + 1)); + return $"new []\r\n{indStr}{{\r\n{indStrSub}{string.Join($",\r\n{indStrSub}", items)}\r\n{indStr}}}"; + } + + return $"new [] {{ {string.Join(", ", items)} }}"; + } } \ No newline at end of file