1*6777b538SAndroid Build Coastguard Worker// Copyright 2017 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker// found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker// The proto definition for JSON format has been written based on 6*6777b538SAndroid Build Coastguard Worker// http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Workersyntax = "proto2"; 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Workerpackage json_proto; 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Workermessage JsonObjectField { 13*6777b538SAndroid Build Coastguard Worker required string name = 1; 14*6777b538SAndroid Build Coastguard Worker required JsonValue value = 2; 15*6777b538SAndroid Build Coastguard Worker} 16*6777b538SAndroid Build Coastguard Worker 17*6777b538SAndroid Build Coastguard Workermessage JsonObject { 18*6777b538SAndroid Build Coastguard Worker repeated JsonObjectField field = 3; 19*6777b538SAndroid Build Coastguard Worker} 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Workermessage JsonValue { 22*6777b538SAndroid Build Coastguard Worker oneof value { 23*6777b538SAndroid Build Coastguard Worker // Json value types: 24*6777b538SAndroid Build Coastguard Worker 25*6777b538SAndroid Build Coastguard Worker // null: null, will be used when 'oneof' contains nothing 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker // object: another json object of any type 28*6777b538SAndroid Build Coastguard Worker JsonObject object_value = 1; 29*6777b538SAndroid Build Coastguard Worker 30*6777b538SAndroid Build Coastguard Worker // array: an array of values 31*6777b538SAndroid Build Coastguard Worker ArrayValue array_value = 2; 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Worker // number: can be an integer, a float, an exponent 34*6777b538SAndroid Build Coastguard Worker NumberValue number_value = 3; 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker // string: unicode string 37*6777b538SAndroid Build Coastguard Worker StringValue string_value = 4; 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard Worker // boolean: true or talse 40*6777b538SAndroid Build Coastguard Worker BooleanValue boolean_value = 5; 41*6777b538SAndroid Build Coastguard Worker } 42*6777b538SAndroid Build Coastguard Worker} 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Workermessage ArrayValue { 45*6777b538SAndroid Build Coastguard Worker repeated JsonValue value = 1; 46*6777b538SAndroid Build Coastguard Worker} 47*6777b538SAndroid Build Coastguard Worker 48*6777b538SAndroid Build Coastguard Workermessage NumberInteger { 49*6777b538SAndroid Build Coastguard Worker required int64 value = 1; 50*6777b538SAndroid Build Coastguard Worker} 51*6777b538SAndroid Build Coastguard Worker 52*6777b538SAndroid Build Coastguard Workermessage NumberFloat { 53*6777b538SAndroid Build Coastguard Worker required double value = 1; 54*6777b538SAndroid Build Coastguard Worker} 55*6777b538SAndroid Build Coastguard Worker 56*6777b538SAndroid Build Coastguard Workermessage NumberExponent { 57*6777b538SAndroid Build Coastguard Worker required int32 base = 1; 58*6777b538SAndroid Build Coastguard Worker required int32 exponent = 2; 59*6777b538SAndroid Build Coastguard Worker required bool use_uppercase = 3; 60*6777b538SAndroid Build Coastguard Worker} 61*6777b538SAndroid Build Coastguard Worker 62*6777b538SAndroid Build Coastguard Workermessage NumberExponentFrac { 63*6777b538SAndroid Build Coastguard Worker required float base = 1; 64*6777b538SAndroid Build Coastguard Worker required int32 exponent = 2; 65*6777b538SAndroid Build Coastguard Worker required bool use_uppercase = 3; 66*6777b538SAndroid Build Coastguard Worker} 67*6777b538SAndroid Build Coastguard Worker 68*6777b538SAndroid Build Coastguard Workermessage NumberValue { 69*6777b538SAndroid Build Coastguard Worker required NumberInteger integer_value = 1; 70*6777b538SAndroid Build Coastguard Worker 71*6777b538SAndroid Build Coastguard Worker // integer_value is used when oneof field below has nothing. 72*6777b538SAndroid Build Coastguard Worker oneof value { 73*6777b538SAndroid Build Coastguard Worker NumberFloat float_value = 2; 74*6777b538SAndroid Build Coastguard Worker NumberExponent exponent_value = 3; 75*6777b538SAndroid Build Coastguard Worker NumberExponentFrac exponent_frac_value = 4; 76*6777b538SAndroid Build Coastguard Worker } 77*6777b538SAndroid Build Coastguard Worker} 78*6777b538SAndroid Build Coastguard Worker 79*6777b538SAndroid Build Coastguard Workermessage StringValue { 80*6777b538SAndroid Build Coastguard Worker required string value = 1; 81*6777b538SAndroid Build Coastguard Worker} 82*6777b538SAndroid Build Coastguard Worker 83*6777b538SAndroid Build Coastguard Workermessage BooleanValue { 84*6777b538SAndroid Build Coastguard Worker required bool value = 1; 85*6777b538SAndroid Build Coastguard Worker} 86