1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct JsonNode {
16 #[serde(rename = "elements", skip_serializing_if = "Option::is_none")]
17 pub elements: Option<serde_json::Value>,
18 #[serde(rename = "pojo", skip_serializing_if = "Option::is_none")]
19 pub pojo: Option<bool>,
20 #[serde(rename = "containerNode", skip_serializing_if = "Option::is_none")]
21 pub container_node: Option<bool>,
22 #[serde(rename = "missingNode", skip_serializing_if = "Option::is_none")]
23 pub missing_node: Option<bool>,
24 #[serde(rename = "object", skip_serializing_if = "Option::is_none")]
25 pub object: Option<bool>,
26 #[serde(rename = "valueNode", skip_serializing_if = "Option::is_none")]
27 pub value_node: Option<bool>,
28 #[serde(rename = "number", skip_serializing_if = "Option::is_none")]
29 pub number: Option<bool>,
30 #[serde(rename = "integralNumber", skip_serializing_if = "Option::is_none")]
31 pub integral_number: Option<bool>,
32 #[serde(rename = "floatingPointNumber", skip_serializing_if = "Option::is_none")]
33 pub floating_point_number: Option<bool>,
34 #[serde(rename = "int", skip_serializing_if = "Option::is_none")]
35 pub int: Option<bool>,
36 #[serde(rename = "long", skip_serializing_if = "Option::is_none")]
37 pub long: Option<bool>,
38 #[serde(rename = "double", skip_serializing_if = "Option::is_none")]
39 pub double: Option<bool>,
40 #[serde(rename = "bigDecimal", skip_serializing_if = "Option::is_none")]
41 pub big_decimal: Option<bool>,
42 #[serde(rename = "bigInteger", skip_serializing_if = "Option::is_none")]
43 pub big_integer: Option<bool>,
44 #[serde(rename = "textual", skip_serializing_if = "Option::is_none")]
45 pub textual: Option<bool>,
46 #[serde(rename = "boolean", skip_serializing_if = "Option::is_none")]
47 pub boolean: Option<bool>,
48 #[serde(rename = "binary", skip_serializing_if = "Option::is_none")]
49 pub binary: Option<bool>,
50 #[serde(rename = "numberValue", skip_serializing_if = "Option::is_none")]
51 pub number_value: Option<f64>,
52 #[serde(rename = "numberType", skip_serializing_if = "Option::is_none")]
53 pub number_type: Option<NumberType>,
54 #[serde(rename = "intValue", skip_serializing_if = "Option::is_none")]
55 pub int_value: Option<i32>,
56 #[serde(rename = "longValue", skip_serializing_if = "Option::is_none")]
57 pub long_value: Option<i64>,
58 #[serde(rename = "bigIntegerValue", skip_serializing_if = "Option::is_none")]
59 pub big_integer_value: Option<i32>,
60 #[serde(rename = "doubleValue", skip_serializing_if = "Option::is_none")]
61 pub double_value: Option<f64>,
62 #[serde(rename = "decimalValue", skip_serializing_if = "Option::is_none")]
63 pub decimal_value: Option<f64>,
64 #[serde(rename = "booleanValue", skip_serializing_if = "Option::is_none")]
65 pub boolean_value: Option<bool>,
66 #[serde(rename = "binaryValue", skip_serializing_if = "Option::is_none")]
67 pub binary_value: Option<Vec<String>>,
68 #[serde(rename = "valueAsInt", skip_serializing_if = "Option::is_none")]
69 pub value_as_int: Option<i32>,
70 #[serde(rename = "valueAsLong", skip_serializing_if = "Option::is_none")]
71 pub value_as_long: Option<i64>,
72 #[serde(rename = "valueAsDouble", skip_serializing_if = "Option::is_none")]
73 pub value_as_double: Option<f64>,
74 #[serde(rename = "valueAsBoolean", skip_serializing_if = "Option::is_none")]
75 pub value_as_boolean: Option<bool>,
76 #[serde(rename = "textValue", skip_serializing_if = "Option::is_none")]
77 pub text_value: Option<String>,
78 #[serde(rename = "valueAsText", skip_serializing_if = "Option::is_none")]
79 pub value_as_text: Option<String>,
80 #[serde(rename = "fieldNames", skip_serializing_if = "Option::is_none")]
81 pub field_names: Option<serde_json::Value>,
82 #[serde(rename = "array", skip_serializing_if = "Option::is_none")]
83 pub array: Option<bool>,
84 #[serde(rename = "fields", skip_serializing_if = "Option::is_none")]
85 pub fields: Option<serde_json::Value>,
86 #[serde(rename = "null", skip_serializing_if = "Option::is_none")]
87 pub null: Option<bool>,
88}
89
90impl JsonNode {
91 pub fn new() -> JsonNode {
92 JsonNode {
93 elements: None,
94 pojo: None,
95 container_node: None,
96 missing_node: None,
97 object: None,
98 value_node: None,
99 number: None,
100 integral_number: None,
101 floating_point_number: None,
102 int: None,
103 long: None,
104 double: None,
105 big_decimal: None,
106 big_integer: None,
107 textual: None,
108 boolean: None,
109 binary: None,
110 number_value: None,
111 number_type: None,
112 int_value: None,
113 long_value: None,
114 big_integer_value: None,
115 double_value: None,
116 decimal_value: None,
117 boolean_value: None,
118 binary_value: None,
119 value_as_int: None,
120 value_as_long: None,
121 value_as_double: None,
122 value_as_boolean: None,
123 text_value: None,
124 value_as_text: None,
125 field_names: None,
126 array: None,
127 fields: None,
128 null: None,
129 }
130 }
131}
132#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
134pub enum NumberType {
135 #[serde(rename = "INT")]
136 Int,
137 #[serde(rename = "LONG")]
138 Long,
139 #[serde(rename = "BIG_INTEGER")]
140 BigInteger,
141 #[serde(rename = "FLOAT")]
142 Float,
143 #[serde(rename = "DOUBLE")]
144 Double,
145 #[serde(rename = "BIG_DECIMAL")]
146 BigDecimal,
147}
148
149impl Default for NumberType {
150 fn default() -> NumberType {
151 Self::Int
152 }
153}
154