ObjectNullEmpty adds an object to be encoded or skips it if IsNil returns true. Must be used inside a slice or array encoding (does not encode a key) value must implement MarshalerJSONObject
(v MarshalerJSONObject)
| 194 | // Must be used inside a slice or array encoding (does not encode a key) |
| 195 | // value must implement MarshalerJSONObject |
| 196 | func (enc *Encoder) ObjectNullEmpty(v MarshalerJSONObject) { |
| 197 | enc.grow(2) |
| 198 | r := enc.getPreviousRune() |
| 199 | if r != '[' { |
| 200 | enc.writeByte(',') |
| 201 | } |
| 202 | if v.IsNil() { |
| 203 | enc.writeBytes(nullBytes) |
| 204 | return |
| 205 | } |
| 206 | enc.writeByte('{') |
| 207 | |
| 208 | var origHasKeys = enc.hasKeys |
| 209 | var origKeys = enc.keys |
| 210 | enc.hasKeys = false |
| 211 | enc.keys = nil |
| 212 | |
| 213 | v.MarshalJSONObject(enc) |
| 214 | |
| 215 | enc.hasKeys = origHasKeys |
| 216 | enc.keys = origKeys |
| 217 | |
| 218 | enc.writeByte('}') |
| 219 | } |
| 220 | |
| 221 | // ObjectKey adds a struct to be encoded, must be used inside an object as it will encode a key |
| 222 | // value must implement MarshalerJSONObject |