ObjectKey adds a struct to be encoded, must be used inside an object as it will encode a key value must implement MarshalerJSONObject
(key string, v MarshalerJSONObject)
| 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 |
| 223 | func (enc *Encoder) ObjectKey(key string, v MarshalerJSONObject) { |
| 224 | if enc.hasKeys { |
| 225 | if !enc.keyExists(key) { |
| 226 | return |
| 227 | } |
| 228 | } |
| 229 | if v.IsNil() { |
| 230 | enc.grow(2 + len(key)) |
| 231 | r := enc.getPreviousRune() |
| 232 | if r != '{' { |
| 233 | enc.writeByte(',') |
| 234 | } |
| 235 | enc.writeByte('"') |
| 236 | enc.writeStringEscape(key) |
| 237 | enc.writeBytes(objKeyObj) |
| 238 | enc.writeByte('}') |
| 239 | return |
| 240 | } |
| 241 | enc.grow(5 + len(key)) |
| 242 | r := enc.getPreviousRune() |
| 243 | if r != '{' { |
| 244 | enc.writeByte(',') |
| 245 | } |
| 246 | enc.writeByte('"') |
| 247 | enc.writeStringEscape(key) |
| 248 | enc.writeBytes(objKeyObj) |
| 249 | |
| 250 | var origHasKeys = enc.hasKeys |
| 251 | var origKeys = enc.keys |
| 252 | enc.hasKeys = false |
| 253 | enc.keys = nil |
| 254 | |
| 255 | v.MarshalJSONObject(enc) |
| 256 | |
| 257 | enc.hasKeys = origHasKeys |
| 258 | enc.keys = origKeys |
| 259 | |
| 260 | enc.writeByte('}') |
| 261 | } |
| 262 | |
| 263 | // ObjectKeyWithKeys adds a struct to be encoded, must be used inside an object as it will encode a key. |
| 264 | // Value must implement MarshalerJSONObject. It will only encode the keys in keys. |