diff --git a/pyangbind/lib/serialise.py b/pyangbind/lib/serialise.py index d9c66593..7b31b3d5 100644 --- a/pyangbind/lib/serialise.py +++ b/pyangbind/lib/serialise.py @@ -159,10 +159,10 @@ def default(self, obj): return ndict elif isinstance(obj, (str,)): return str(obj) - elif isinstance(obj, (int,)): - return int(obj) elif isinstance(obj, (YANGBool, bool)): return bool(obj) + elif isinstance(obj, (int,)): + return int(obj) elif isinstance(obj, Decimal): return self.yangt_decimal(obj) diff --git a/tests/serialise/json-serialise/json-serialise.yang b/tests/serialise/json-serialise/json-serialise.yang index 07a8e0d5..8f2a3f2f 100644 --- a/tests/serialise/json-serialise/json-serialise.yang +++ b/tests/serialise/json-serialise/json-serialise.yang @@ -244,6 +244,12 @@ module json-serialise { } } + container c2 { + leaf-list ll0 { + type boolean; + } + } + container two { leaf string-test { type string; diff --git a/tests/serialise/json-serialise/run.py b/tests/serialise/json-serialise/run.py index 9036caba..d053e2bb 100755 --- a/tests/serialise/json-serialise/run.py +++ b/tests/serialise/json-serialise/run.py @@ -72,6 +72,14 @@ def test_full_serialise(self): external_json = json.load(fp) self.assertEqual(pybind_json, external_json, "JSON did not match expected output.") + def test_boolean_before_int_serialize(self): + self.serialise_obj.c2.ll0 = [True, False] + + pybind_json = json.loads(dumps(self.serialise_obj)) + + self.assertIs(pybind_json["c2"]["ll0"][0], True, "JSON did not match expected output.") + self.assertIs(pybind_json["c2"]["ll0"][1], False, "JSON did not match expected output.") + if __name__ == "__main__": unittest.main()