jsonbuilder: add append_hex - add hex to array

New method, append_hex to add a byte array to a JSON array in hex
encoding.
pull/8113/head
Jason Ish 3 years ago committed by Victor Julien
parent 4bc9cf3986
commit 4a0859beeb

@ -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.
pub fn append_uint(&mut self, val: u64) -> Result<&mut Self, JsonError> {
match self.current_state() {

Loading…
Cancel
Save