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