|
|
@ -328,6 +328,36 @@ impl JsonBuilder {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// Add a byte array to a JSON array encoded as hex.
|
|
|
|
|
|
|
|
pub fn append_hex(&mut self, val: &[u8]) -> Result<&mut Self, JsonError> {
|
|
|
|
|
|
|
|
match self.current_state() {
|
|
|
|
|
|
|
|
State::ArrayFirst => {
|
|
|
|
|
|
|
|
self.buf.push('"');
|
|
|
|
|
|
|
|
for i in 0..val.len() {
|
|
|
|
|
|
|
|
self.buf.push(HEX[(val[i] >> 4) as usize] as char);
|
|
|
|
|
|
|
|
self.buf.push(HEX[(val[i] & 0xf) as usize] as char);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
self.buf.push('"');
|
|
|
|
|
|
|
|
self.set_state(State::ArrayNth);
|
|
|
|
|
|
|
|
Ok(self)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
State::ArrayNth => {
|
|
|
|
|
|
|
|
self.buf.push(',');
|
|
|
|
|
|
|
|
self.buf.push('"');
|
|
|
|
|
|
|
|
for i in 0..val.len() {
|
|
|
|
|
|
|
|
self.buf.push(HEX[(val[i] >> 4) as usize] as char);
|
|
|
|
|
|
|
|
self.buf.push(HEX[(val[i] & 0xf) as usize] as char);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
self.buf.push('"');
|
|
|
|
|
|
|
|
Ok(self)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
_ => {
|
|
|
|
|
|
|
|
debug_validate_fail!("invalid state");
|
|
|
|
|
|
|
|
Err(JsonError::InvalidState)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// Add an unsigned integer to an array.
|
|
|
|
/// Add an unsigned integer to an array.
|
|
|
|
pub fn append_uint(&mut self, val: u64) -> Result<&mut Self, JsonError> {
|
|
|
|
pub fn append_uint(&mut self, val: u64) -> Result<&mut Self, JsonError> {
|
|
|
|
match self.current_state() {
|
|
|
|
match self.current_state() {
|
|
|
|