code: def testDumpsNestedJsonableObject(self):
      nested_obj = _DefaultJsonableObject(
          1, 2, trainer_pb2.TrainArgs(num_steps=100)
      )
      obj = _DefaultJsonableObject(nested_obj, None, None)
  
      json_text = json_utils.dumps(obj)
      self.assertEqual(
          (
              '{"__class__": "_DefaultJsonableObject", "__module__": "__main__",'
              ' "__tfx_object_type__": "jsonable", "a": {"__class__":'
              ' "_DefaultJsonableObject", "__module__": "__main__",'
              ' "__tfx_object_type__": "jsonable", "a": 1, "b": 2, "c":'
              ' {"__class__": "TrainArgs", "__module__": "tfx.proto.trainer_pb2",'
              ' "__proto_value__": "{\\n  \\"num_steps\\": 100\\n}",'
              ' "__tfx_object_type__": "proto"}}, "b": null, "c": null}'
          ),
          json_text,
      )
  
      actual_obj = json_utils.loads(json_text)
      self.assertEqual(1, actual_obj.a.a)
      self.assertEqual(2, actual_obj.a.b)
      self.assertProtoEquals(
          trainer_pb2.TrainArgs(num_steps=100), actual_obj.a.c
      )
      self.assertIsNone(actual_obj.b)
      self.assertIsNone(actual_obj.c)
  
file_path: tfx/tfx/utils/json_utils_test.py
imports: import tensorflow
  from tfx.proto import trainer_pb2
  from tfx.utils import deprecation_utils
  from tfx.utils import json_utils
label_desc: Use image node_id 2 for calling the JsonUtilsTest obj's underlying member method code with example usage: obj.testDumpsNestedJsonableObject() without return types