123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- // +build amd64,go1.16,!go1.22
- /*
- * Copyright 2023 ByteDance Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package encoder
- import (
- `github.com/bytedance/sonic/internal/encoder`
- )
- // Encoder represents a specific set of encoder configurations.
- type Encoder = encoder.Encoder
- // StreamEncoder uses io.Writer as input.
- type StreamEncoder = encoder.StreamEncoder
- // Options is a set of encoding options.
- type Options = encoder.Options
- const (
- // SortMapKeys indicates that the keys of a map needs to be sorted
- // before serializing into JSON.
- // WARNING: This hurts performance A LOT, USE WITH CARE.
- SortMapKeys Options = encoder.SortMapKeys
- // EscapeHTML indicates encoder to escape all HTML characters
- // after serializing into JSON (see https://pkg.go.dev/encoding/json#HTMLEscape).
- // WARNING: This hurts performance A LOT, USE WITH CARE.
- EscapeHTML Options = encoder.EscapeHTML
- // CompactMarshaler indicates that the output JSON from json.Marshaler
- // is always compact and needs no validation
- CompactMarshaler Options = encoder.CompactMarshaler
- // NoQuoteTextMarshaler indicates that the output text from encoding.TextMarshaler
- // is always escaped string and needs no quoting
- NoQuoteTextMarshaler Options = encoder.NoQuoteTextMarshaler
- // NoNullSliceOrMap indicates all empty Array or Object are encoded as '[]' or '{}',
- // instead of 'null'
- NoNullSliceOrMap Options = encoder.NoNullSliceOrMap
- // ValidateString indicates that encoder should validate the input string
- // before encoding it into JSON.
- ValidateString Options = encoder.ValidateString
- // NoValidateJSONMarshaler indicates that the encoder should not validate the output string
- // after encoding the JSONMarshaler to JSON.
- NoValidateJSONMarshaler Options = encoder.NoValidateJSONMarshaler
- // CompatibleWithStd is used to be compatible with std encoder.
- CompatibleWithStd Options = encoder.CompatibleWithStd
- )
- var (
- // Encode returns the JSON encoding of val, encoded with opts.
- Encode = encoder.Encode
- // EncodeInto is like Encode but uses a user-supplied buffer instead of allocating a new one.
- EncodeIndented = encoder.EncodeIndented
- // EncodeIndented is like Encode but applies Indent to format the output.
- // Each JSON element in the output will begin on a new line beginning with prefix
- // followed by one or more copies of indent according to the indentation nesting.
- EncodeInto = encoder.EncodeInto
- // HTMLEscape appends to dst the JSON-encoded src with <, >, &, U+2028 and U+2029
- // characters inside string literals changed to \u003c, \u003e, \u0026, \u2028, \u2029
- // so that the JSON will be safe to embed inside HTML <script> tags.
- // For historical reasons, web browsers don't honor standard HTML
- // escaping within <script> tags, so an alternative JSON encoding must
- // be used.
- HTMLEscape = encoder.HTMLEscape
- // Pretouch compiles vt ahead-of-time to avoid JIT compilation on-the-fly, in
- // order to reduce the first-hit latency.
- //
- // Opts are the compile options, for example, "option.WithCompileRecursiveDepth" is
- // a compile option to set the depth of recursive compile for the nested struct type.
- Pretouch = encoder.Pretouch
- // Quote returns the JSON-quoted version of s.
- Quote = encoder.Quote
- // Valid validates json and returns first non-blank character position,
- // if it is only one valid json value.
- // Otherwise returns invalid character position using start.
- //
- // Note: it does not check for the invalid UTF-8 characters.
- Valid = encoder.Valid
- // NewStreamEncoder adapts to encoding/json.NewDecoder API.
- //
- // NewStreamEncoder returns a new encoder that write to w.
- NewStreamEncoder = encoder.NewStreamEncoder
- )
|