From 66c4f5aa62363ea07b2547d5a7c66a5d328f8acb Mon Sep 17 00:00:00 2001 From: Courela Date: Fri, 11 Jul 2025 13:15:04 +0100 Subject: [PATCH 1/2] Use Context.SplitGroupChar instead of hardcoded ':' (cherry picked from commit 03b4e27ae8237e782158c454c5ffe980bd6ca78b) --- JUST.net/Utilities.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JUST.net/Utilities.cs b/JUST.net/Utilities.cs index fb688e7..774f29d 100644 --- a/JUST.net/Utilities.cs +++ b/JUST.net/Utilities.cs @@ -135,7 +135,7 @@ public static JArray GroupArrayMultipleProperties(JArray array, string[] grou if (key == string.Empty) key += valueOfToken; else - key += ":" + valueOfToken; + key += $"{context.SplitGroupChar}{valueOfToken}"; } @@ -175,7 +175,7 @@ public static JArray GroupArrayMultipleProperties(JArray array, string[] grou JObject groupObj = new JObject(); - string[] keys = pair.Key.Split(':'); + string[] keys = pair.Key.Split(context.SplitGroupChar); int i = 0; foreach (string groupPropertyName in groupingPropertyNames) From 05077615182320766220f8ff9c5f66bbd7f8b583 Mon Sep 17 00:00:00 2001 From: Courela Date: Fri, 11 Jul 2025 13:30:13 +0100 Subject: [PATCH 2/2] Test 'RedefineSplitGroupCharWithDates' --- UnitTests/Arrays/GroupFunctionsTests.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/UnitTests/Arrays/GroupFunctionsTests.cs b/UnitTests/Arrays/GroupFunctionsTests.cs index 4f2a009..0b66181 100644 --- a/UnitTests/Arrays/GroupFunctionsTests.cs +++ b/UnitTests/Arrays/GroupFunctionsTests.cs @@ -38,5 +38,17 @@ public void RedefineSplitChar() Assert.AreEqual("{\"Result\":[{\"type:a\":\"air\",\"company\":\"Boeing\",\"all\":[{\"name\":\"airplane\"},{\"name\":\"Chopper\"}]},{\"type:a\":\"air\",\"company\":\"Concorde\",\"all\":[{\"name\":\"airplane\"}]},{\"type:a\":\"land\",\"company\":\"GM\",\"all\":[{\"name\":\"car\"},{\"name\":\"truck\"}]},{\"type:a\":\"sea\",\"company\":\"Viking\",\"all\":[{\"name\":\"ship\"}]}]}", result); } + + [Test] + public void RedefineSplitCharWithDates() + { + const string transformer = "{ \"Result\": \"#grouparrayby($,payrollUnit|fromDate,all)\" }"; + const string input = "[ { \"payrollUnit\": \"euro\", \"name\": \"John\", \"fromDate\": \"2022-01-01T00:00:00\" }, { \"payrollUnit\": \"euro\", \"name\": \"Smith\", \"fromDate\": \"2022-01-01T00:00:00\" }, { \"payrollUnit\": \"usd\", \"name\": \"Lucy\", \"fromDate\": \"2022-01-01T00:00:00\" }, { \"payrollUnit\": \"yen\", \"name\": \"Anne\", \"fromDate\": \"2022-02-01T00:00:00\" }, { \"payrollUnit\": \"usd\", \"name\": \"James\", \"fromDate\": \"2022-12-01T00:00:00\" }, { \"payrollUnit\": \"euro\", \"fromDate\": \"2022-06-01T00:00:00\", \"name\": \"Thelma\" } ]"; + + var context = new JUSTContext() { SplitGroupChar = '|' }; + var result = new JsonTransformer(context).Transform(transformer, input); + + Assert.AreEqual("{\"Result\":[{\"payrollUnit\":\"euro\",\"fromDate\":\"2022-01-01T00:00:00\",\"all\":[{\"name\":\"John\"},{\"name\":\"Smith\"}]},{\"payrollUnit\":\"usd\",\"fromDate\":\"2022-01-01T00:00:00\",\"all\":[{\"name\":\"Lucy\"}]},{\"payrollUnit\":\"yen\",\"fromDate\":\"2022-02-01T00:00:00\",\"all\":[{\"name\":\"Anne\"}]},{\"payrollUnit\":\"usd\",\"fromDate\":\"2022-12-01T00:00:00\",\"all\":[{\"name\":\"James\"}]},{\"payrollUnit\":\"euro\",\"fromDate\":\"2022-06-01T00:00:00\",\"all\":[{\"name\":\"Thelma\"}]}]}", result); + } } }