MCPcopy Create free account
hub / github.com/francoispqt/gojay / ObjectKeyNullEmpty

Method ObjectKeyNullEmpty

encode_object.go:338–369  ·  view source on GitHub ↗

ObjectKeyNullEmpty 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

(key string, v MarshalerJSONObject)

Source from the content-addressed store, hash-verified

336// Must be used inside a slice or array encoding (does not encode a key)
337// value must implement MarshalerJSONObject
338func (enc *Encoder) ObjectKeyNullEmpty(key string, v MarshalerJSONObject) {
339 if enc.hasKeys {
340 if !enc.keyExists(key) {
341 return
342 }
343 }
344 enc.grow(5 + len(key))
345 r := enc.getPreviousRune()
346 if r != '{' {
347 enc.writeByte(',')
348 }
349 enc.writeByte('"')
350 enc.writeStringEscape(key)
351 enc.writeBytes(objKey)
352 if v.IsNil() {
353 enc.writeBytes(nullBytes)
354 return
355 }
356 enc.writeByte('{')
357
358 var origHasKeys = enc.hasKeys
359 var origKeys = enc.keys
360 enc.hasKeys = false
361 enc.keys = nil
362
363 v.MarshalJSONObject(enc)
364
365 enc.hasKeys = origHasKeys
366 enc.keys = origKeys
367
368 enc.writeByte('}')
369}
370
371// EncodeObjectFunc is a custom func type implementing MarshaleObject.
372// Use it to cast a func(*Encoder) to Marshal an object.

Callers 3

AddObjectKeyNullEmptyMethod · 0.95
MarshalJSONObjectMethod · 0.80

Calls 8

keyExistsMethod · 0.95
growMethod · 0.95
getPreviousRuneMethod · 0.95
writeByteMethod · 0.95
writeStringEscapeMethod · 0.95
writeBytesMethod · 0.95
IsNilMethod · 0.65
MarshalJSONObjectMethod · 0.65

Tested by 2

MarshalJSONObjectMethod · 0.64