xref: /aosp_15_r20/external/cronet/testing/libfuzzer/proto/json.proto (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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