| // Copyright 2017 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // 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 JsonObject { | |
| required string name = 1; | |
| required JsonValue value = 2; | |
| } | |
| 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; | |
| } |