From fb25dff65a510a806e429b544768b1bd7c9e0916 Mon Sep 17 00:00:00 2001 From: GeorgeOG Date: Sat, 22 Mar 2025 17:36:26 +0000 Subject: [PATCH 1/5] Update json_parse_node.py serialize objects to bytes in a JSON compatible way --- .../json/kiota_serialization_json/json_parse_node.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/serialization/json/kiota_serialization_json/json_parse_node.py b/packages/serialization/json/kiota_serialization_json/json_parse_node.py index f560319f..0fefee4e 100644 --- a/packages/serialization/json/kiota_serialization_json/json_parse_node.py +++ b/packages/serialization/json/kiota_serialization_json/json_parse_node.py @@ -233,7 +233,7 @@ def get_bytes_value(self) -> Optional[bytes]: Returns: bytearray: The bytearray value from the nodes """ - base64_string = str(self._json_node) + base64_string = json.dumps(self._json_node) if not base64_string: return None return base64_string.encode("utf-8") From d6c2c8837e7f3e94b6770fbb55b5a7cfb9bb8e07 Mon Sep 17 00:00:00 2001 From: George Garber Date: Sun, 23 Mar 2025 12:58:34 +0000 Subject: [PATCH 2/5] tests --- .../json/kiota_serialization_json/json_parse_node.py | 5 ++++- .../serialization/json/tests/unit/test_json_parse_node.py | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/serialization/json/kiota_serialization_json/json_parse_node.py b/packages/serialization/json/kiota_serialization_json/json_parse_node.py index 0fefee4e..37fa9d5f 100644 --- a/packages/serialization/json/kiota_serialization_json/json_parse_node.py +++ b/packages/serialization/json/kiota_serialization_json/json_parse_node.py @@ -233,7 +233,10 @@ def get_bytes_value(self) -> Optional[bytes]: Returns: bytearray: The bytearray value from the nodes """ - base64_string = json.dumps(self._json_node) + if isinstance(self._json_node, list) or isinstance(self._json_node, dict): + base64_string = json.dumps(self._json_node) + else: + base64_string = str(self._json_node) if not base64_string: return None return base64_string.encode("utf-8") diff --git a/packages/serialization/json/tests/unit/test_json_parse_node.py b/packages/serialization/json/tests/unit/test_json_parse_node.py index 21ea6a0a..1a01135d 100644 --- a/packages/serialization/json/tests/unit/test_json_parse_node.py +++ b/packages/serialization/json/tests/unit/test_json_parse_node.py @@ -110,6 +110,12 @@ def test_get_bytes_value(): assert isinstance(result, bytes) +def test_get_bytes_json_compatible(): + parse_node = JsonParseNode({"test": 1}) + result = parse_node.get_bytes_value() + assert json.loads(result.decode("utf-8")) == {"test": 1} + + def test_get_collection_of_enum_values(): parse_node = JsonParseNode(["dunhill", "oval"]) result = parse_node.get_collection_of_enum_values(OfficeLocation) From e5e433b4a5ec560ff229587d6722622e2f52017f Mon Sep 17 00:00:00 2001 From: George Garber Date: Sun, 23 Mar 2025 13:07:13 +0000 Subject: [PATCH 3/5] except strings --- .../json/kiota_serialization_json/json_parse_node.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/serialization/json/kiota_serialization_json/json_parse_node.py b/packages/serialization/json/kiota_serialization_json/json_parse_node.py index 37fa9d5f..bc1709db 100644 --- a/packages/serialization/json/kiota_serialization_json/json_parse_node.py +++ b/packages/serialization/json/kiota_serialization_json/json_parse_node.py @@ -233,10 +233,10 @@ def get_bytes_value(self) -> Optional[bytes]: Returns: bytearray: The bytearray value from the nodes """ - if isinstance(self._json_node, list) or isinstance(self._json_node, dict): - base64_string = json.dumps(self._json_node) + if isinstance(self._json_node, str) + base64_string = self._json_node else: - base64_string = str(self._json_node) + base64_string = json.dumps(self._json_node) if not base64_string: return None return base64_string.encode("utf-8") From 437b975af7f121933a9efa0486b9d5a8970abed5 Mon Sep 17 00:00:00 2001 From: George Garber Date: Sun, 23 Mar 2025 13:07:39 +0000 Subject: [PATCH 4/5] except strings --- .../json/kiota_serialization_json/json_parse_node.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/serialization/json/kiota_serialization_json/json_parse_node.py b/packages/serialization/json/kiota_serialization_json/json_parse_node.py index bc1709db..b6682fbc 100644 --- a/packages/serialization/json/kiota_serialization_json/json_parse_node.py +++ b/packages/serialization/json/kiota_serialization_json/json_parse_node.py @@ -233,7 +233,7 @@ def get_bytes_value(self) -> Optional[bytes]: Returns: bytearray: The bytearray value from the nodes """ - if isinstance(self._json_node, str) + if isinstance(self._json_node, str): base64_string = self._json_node else: base64_string = json.dumps(self._json_node) From 74d27eca189cd01357f9087bd554f9d9c868f8de Mon Sep 17 00:00:00 2001 From: George Garber Date: Sun, 23 Mar 2025 13:13:34 +0000 Subject: [PATCH 5/5] test --- packages/serialization/json/tests/unit/test_json_parse_node.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/serialization/json/tests/unit/test_json_parse_node.py b/packages/serialization/json/tests/unit/test_json_parse_node.py index 1a01135d..e82f8ef3 100644 --- a/packages/serialization/json/tests/unit/test_json_parse_node.py +++ b/packages/serialization/json/tests/unit/test_json_parse_node.py @@ -108,6 +108,7 @@ def test_get_bytes_value(): parse_node = JsonParseNode("U2Ftd2VsIGlzIHRoZSBiZXN0") result = parse_node.get_bytes_value() assert isinstance(result, bytes) + assert result.decode("utf-8") == "U2Ftd2VsIGlzIHRoZSBiZXN0" def test_get_bytes_json_compatible():