diff --git a/conformance/conformance_python.py b/conformance/conformance_python.py index af3dc8ecf5..32aa225556 100755 --- a/conformance/conformance_python.py +++ b/conformance/conformance_python.py @@ -39,6 +39,7 @@ import struct import sys import os from google.protobuf import message +from google.protobuf import json_format import conformance_pb2 sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0) @@ -61,8 +62,11 @@ def do_test(request): return response elif request.WhichOneof('payload') == 'json_payload': - response.skipped = "JSON not supported yet." - return response + try: + json_format.Parse(request.json_payload, test_message) + except json_format.ParseError as e: + response.parse_error = str(e) + return response else: raise "Request didn't have payload." @@ -74,7 +78,8 @@ def do_test(request): response.protobuf_payload = test_message.SerializeToString() elif request.requested_output_format == conformance_pb2.JSON: - response.skipped = "JSON not supported yet." + response.json_payload = json_format.MessageToJson(test_message) + except Exception as e: response.runtime_error = str(e)