// Copyright 2020 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// // The proto definition for JSON format has been written based on // http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf syntax = "proto2"; package json_proto; message JsonParseAPI { required int32 settings = 1; required JsonObject object_value = 2; } message JsonObject { required int32 settings = 1; required string name = 2; required JsonValue value = 3; } message JsonValue { oneof value { // Json value types: // null: null, will be used when 'oneof' contains nothing // object: another json object of any type JsonObject object_value = 1; // array: an array of values ArrayValue array_value = 2; // number: can be an integer, a float, an exponent NumberValue number_value = 3; // string: unicode string StringValue string_value = 4; // boolean: true or talse BooleanValue boolean_value = 5; } } message ArrayValue { repeated JsonValue value = 1; } message NumberInteger { required int64 value = 1; } message NumberFloat { required double value = 1; } message NumberExponent { required int32 base = 1; required int32 exponent = 2; required bool use_uppercase = 3; } message NumberExponentFrac { required float base = 1; required int32 exponent = 2; required bool use_uppercase = 3; } message NumberValue { required NumberInteger integer_value = 1; // integer_value is used when oneof field below has nothing. oneof value { NumberFloat float_value = 2; NumberExponent exponent_value = 3; NumberExponentFrac exponent_frac_value = 4; } } message StringValue { required string value = 1; } message BooleanValue { required bool value = 1; }