encoder_amd64.go (4173B)
1 // +build amd64,go1.15,!go1.21 2 3 /* 4 * Copyright 2023 ByteDance Inc. 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 package encoder 20 21 import ( 22 `github.com/bytedance/sonic/internal/encoder` 23 ) 24 25 26 // Encoder represents a specific set of encoder configurations. 27 type Encoder = encoder.Encoder 28 29 // StreamEncoder uses io.Writer as input. 30 type StreamEncoder = encoder.StreamEncoder 31 32 // Options is a set of encoding options. 33 type Options = encoder.Options 34 35 const ( 36 // SortMapKeys indicates that the keys of a map needs to be sorted 37 // before serializing into JSON. 38 // WARNING: This hurts performance A LOT, USE WITH CARE. 39 SortMapKeys Options = encoder.SortMapKeys 40 41 // EscapeHTML indicates encoder to escape all HTML characters 42 // after serializing into JSON (see https://pkg.go.dev/encoding/json#HTMLEscape). 43 // WARNING: This hurts performance A LOT, USE WITH CARE. 44 EscapeHTML Options = encoder.EscapeHTML 45 46 // CompactMarshaler indicates that the output JSON from json.Marshaler 47 // is always compact and needs no validation 48 CompactMarshaler Options = encoder.CompactMarshaler 49 50 // NoQuoteTextMarshaler indicates that the output text from encoding.TextMarshaler 51 // is always escaped string and needs no quoting 52 NoQuoteTextMarshaler Options = encoder.NoQuoteTextMarshaler 53 54 // NoNullSliceOrMap indicates all empty Array or Object are encoded as '[]' or '{}', 55 // instead of 'null' 56 NoNullSliceOrMap Options = encoder.NoNullSliceOrMap 57 58 // ValidateString indicates that encoder should validate the input string 59 // before encoding it into JSON. 60 ValidateString Options = encoder.ValidateString 61 62 // CompatibleWithStd is used to be compatible with std encoder. 63 CompatibleWithStd Options = encoder.CompatibleWithStd 64 ) 65 66 67 var ( 68 // Encode returns the JSON encoding of val, encoded with opts. 69 Encode = encoder.Encode 70 71 // EncodeInto is like Encode but uses a user-supplied buffer instead of allocating a new one. 72 EncodeIndented = encoder.EncodeIndented 73 74 // EncodeIndented is like Encode but applies Indent to format the output. 75 // Each JSON element in the output will begin on a new line beginning with prefix 76 // followed by one or more copies of indent according to the indentation nesting. 77 EncodeInto = encoder.EncodeInto 78 79 // HTMLEscape appends to dst the JSON-encoded src with <, >, &, U+2028 and U+2029 80 // characters inside string literals changed to \u003c, \u003e, \u0026, \u2028, \u2029 81 // so that the JSON will be safe to embed inside HTML <script> tags. 82 // For historical reasons, web browsers don't honor standard HTML 83 // escaping within <script> tags, so an alternative JSON encoding must 84 // be used. 85 HTMLEscape = encoder.HTMLEscape 86 87 // Pretouch compiles vt ahead-of-time to avoid JIT compilation on-the-fly, in 88 // order to reduce the first-hit latency. 89 // 90 // Opts are the compile options, for example, "option.WithCompileRecursiveDepth" is 91 // a compile option to set the depth of recursive compile for the nested struct type. 92 Pretouch = encoder.Pretouch 93 94 // Quote returns the JSON-quoted version of s. 95 Quote = encoder.Quote 96 97 // Valid validates json and returns first non-blank character position, 98 // if it is only one valid json value. 99 // Otherwise returns invalid character position using start. 100 // 101 // Note: it does not check for the invalid UTF-8 characters. 102 Valid = encoder.Valid 103 104 // NewStreamEncoder adapts to encoding/json.NewDecoder API. 105 // 106 // NewStreamEncoder returns a new encoder that write to w. 107 NewStreamEncoder = encoder.NewStreamEncoder 108 )