Skip to content

Commit

Permalink
del(json) Marshal desc
Browse files Browse the repository at this point in the history
  • Loading branch information
Go0p committed Sep 25, 2023
1 parent 00099bd commit f7b37bf
Showing 1 changed file with 1 addition and 2 deletions.
3 changes: 1 addition & 2 deletions docs/api/json.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
| [json.ExtractJSONEx](#ExtractJSONEx) ||
| [json.Find](#Find) ||
| [json.FindPath](#FindPath) ||
| [json.Marshal](#Marshal) |Marshal returns the JSON encoding of v.Marshal traverses the value v recursively.If an encountered value implements the Marshaler interfaceand is not a nil pointer, Marshal calls its MarshalJSON methodto produce JSON. If no MarshalJSON method is present but thevalue implements encoding.TextMarshaler instead, Marshal callsits MarshalText method and encodes the result as a JSON string.The nil pointer exception is not strictly necessarybut mimics a similar, necessary exception in the behavior ofUnmarshalJSON.Otherwise, Marshal uses the following type-dependent default encodings:Boolean values encode as JSON booleans.Floating point, integer, and Number values encode as JSON numbers.String values encode as JSON strings coerced to valid UTF-8,replacing invalid bytes with the Unicode replacement rune.So that the JSON will be safe to embed inside HTML <script> tags,the string is encoded using HTMLEscape,which replaces "<", ">", "&", U+2028, and U+2029 are escapedto "\u003c","\u003e", "\u0026", "\u2028", and "\u2029".This replacement can be disabled when using an Encoder,by calling SetEscapeHTML(false).Array and slice values encode as JSON arrays, except that[]byte encodes as a base64-encoded string, and a nil sliceencodes as the null JSON value.Struct values encode as JSON objects.Each exported struct field becomes a member of the object, using thefield name as the object key, unless the field is omitted for one of thereasons given below.The encoding of each struct field can be customized by the format stringstored under the "json" key in the struct field's tag.The format string gives the name of the field, possibly followed by acomma-separated list of options. The name may be empty in order tospecify options without overriding the default field name.The "omitempty" option specifies that the field should be omittedfrom the encoding if the field has an empty value, defined asfalse, 0, a nil pointer, a nil interface value, and any empty array,slice, map, or string.As a special case, if the field tag is "-", the field is always omitted.Note that a field with name "-" can still be generated using the tag "-,".Examples of struct field tags and their meanings: // Field appears in JSON as key "myName". Field int `json:"myName"` // Field appears in JSON as key "myName" and // the field is omitted from the object if its value is empty, // as defined above. Field int `json:"myName,omitempty"` // Field appears in JSON as key "Field" (the default), but // the field is skipped if empty. // Note the leading comma. Field int `json:",omitempty"` // Field is ignored by this package. Field int `json:"-"` // Field appears in JSON as key "-". Field int `json:"-,"`The "string" option signals that a field is stored as JSON inside aJSON-encoded string. It applies only to fields of string, floating point,integer, or boolean types. This extra level of encoding is sometimes usedwhen communicating with JavaScript programs: Int64String int64 `json:",string"`The key name will be used if it's a non-empty string consisting ofonly Unicode letters, digits, and ASCII punctuation except quotationmarks, backslash, and comma.Anonymous struct fields are usually marshaled as if their inner exported fieldswere fields in the outer struct, subject to the usual Go visibility rules amendedas described in the next paragraph.An anonymous struct field with a name given in its JSON tag is treated ashaving that name, rather than being anonymous.An anonymous struct field of interface type is treated the same as havingthat type as its name, rather than being anonymous.The Go visibility rules for struct fields are amended for JSON whendeciding which field to marshal or unmarshal. If there aremultiple fields at the same level, and that level is the leastnested (and would therefore be the nesting level selected by theusual Go rules), the following extra rules apply:1) Of those fields, if any are JSON-tagged, only tagged fields are considered,even if there are multiple untagged fields that would otherwise conflict.2) If there is exactly one field (tagged or not according to the first rule), that is selected.3) Otherwise there are multiple fields, and all are ignored; no error occurs.Handling of anonymous struct fields is new in Go 1.1.Prior to Go 1.1, anonymous struct fields were ignored. To force ignoring ofan anonymous struct field in both current and earlier versions, give the fielda JSON tag of "-".Map values encode as JSON objects. The map's key type must either be astring, an integer type, or implement encoding.TextMarshaler. The map keysare sorted and used as JSON object keys by applying the following rules,subject to the UTF-8 coercion described for string values above: - keys of any string type are used directly - encoding.TextMarshalers are marshaled - integer keys are converted to stringsPointer values encode as the value pointed to.A nil pointer encodes as the null JSON value.Interface values encode as the value contained in the interface.A nil interface value encodes as the null JSON value.Channel, complex, and function values cannot be encoded in JSON.Attempting to encode such a value causes Marshal to returnan UnsupportedTypeError.JSON cannot represent cyclic data structures and Marshal does nothandle them. Passing cyclic structures to Marshal will result inan error.|
| [json.Marshal](#Marshal) ||
| [json.New](#New) ||
| [json.ReplaceAll](#ReplaceAll) ||
| [json.dumps](#dumps) ||
Expand Down Expand Up @@ -100,7 +100,6 @@
### Marshal

#### 详细描述
Marshal returns the JSON encoding of v.Marshal traverses the value v recursively.If an encountered value implements the Marshaler interfaceand is not a nil pointer, Marshal calls its MarshalJSON methodto produce JSON. If no MarshalJSON method is present but thevalue implements encoding.TextMarshaler instead, Marshal callsits MarshalText method and encodes the result as a JSON string.The nil pointer exception is not strictly necessarybut mimics a similar, necessary exception in the behavior ofUnmarshalJSON.Otherwise, Marshal uses the following type-dependent default encodings:Boolean values encode as JSON booleans.Floating point, integer, and Number values encode as JSON numbers.String values encode as JSON strings coerced to valid UTF-8,replacing invalid bytes with the Unicode replacement rune.So that the JSON will be safe to embed inside HTML <script> tags,the string is encoded using HTMLEscape,which replaces "<", ">", "&", U+2028, and U+2029 are escapedto "\u003c","\u003e", "\u0026", "\u2028", and "\u2029".This replacement can be disabled when using an Encoder,by calling SetEscapeHTML(false).Array and slice values encode as JSON arrays, except that[]byte encodes as a base64-encoded string, and a nil sliceencodes as the null JSON value.Struct values encode as JSON objects.Each exported struct field becomes a member of the object, using thefield name as the object key, unless the field is omitted for one of thereasons given below.The encoding of each struct field can be customized by the format stringstored under the "json" key in the struct field's tag.The format string gives the name of the field, possibly followed by acomma-separated list of options. The name may be empty in order tospecify options without overriding the default field name.The "omitempty" option specifies that the field should be omittedfrom the encoding if the field has an empty value, defined asfalse, 0, a nil pointer, a nil interface value, and any empty array,slice, map, or string.As a special case, if the field tag is "-", the field is always omitted.Note that a field with name "-" can still be generated using the tag "-,".Examples of struct field tags and their meanings: // Field appears in JSON as key "myName". Field int `json:"myName"` // Field appears in JSON as key "myName" and // the field is omitted from the object if its value is empty, // as defined above. Field int `json:"myName,omitempty"` // Field appears in JSON as key "Field" (the default), but // the field is skipped if empty. // Note the leading comma. Field int `json:",omitempty"` // Field is ignored by this package. Field int `json:"-"` // Field appears in JSON as key "-". Field int `json:"-,"`The "string" option signals that a field is stored as JSON inside aJSON-encoded string. It applies only to fields of string, floating point,integer, or boolean types. This extra level of encoding is sometimes usedwhen communicating with JavaScript programs: Int64String int64 `json:",string"`The key name will be used if it's a non-empty string consisting ofonly Unicode letters, digits, and ASCII punctuation except quotationmarks, backslash, and comma.Anonymous struct fields are usually marshaled as if their inner exported fieldswere fields in the outer struct, subject to the usual Go visibility rules amendedas described in the next paragraph.An anonymous struct field with a name given in its JSON tag is treated ashaving that name, rather than being anonymous.An anonymous struct field of interface type is treated the same as havingthat type as its name, rather than being anonymous.The Go visibility rules for struct fields are amended for JSON whendeciding which field to marshal or unmarshal. If there aremultiple fields at the same level, and that level is the leastnested (and would therefore be the nesting level selected by theusual Go rules), the following extra rules apply:1) Of those fields, if any are JSON-tagged, only tagged fields are considered,even if there are multiple untagged fields that would otherwise conflict.2) If there is exactly one field (tagged or not according to the first rule), that is selected.3) Otherwise there are multiple fields, and all are ignored; no error occurs.Handling of anonymous struct fields is new in Go 1.1.Prior to Go 1.1, anonymous struct fields were ignored. To force ignoring ofan anonymous struct field in both current and earlier versions, give the fielda JSON tag of "-".Map values encode as JSON objects. The map's key type must either be astring, an integer type, or implement encoding.TextMarshaler. The map keysare sorted and used as JSON object keys by applying the following rules,subject to the UTF-8 coercion described for string values above: - keys of any string type are used directly - encoding.TextMarshalers are marshaled - integer keys are converted to stringsPointer values encode as the value pointed to.A nil pointer encodes as the null JSON value.Interface values encode as the value contained in the interface.A nil interface value encodes as the null JSON value.Channel, complex, and function values cannot be encoded in JSON.Attempting to encode such a value causes Marshal to returnan UnsupportedTypeError.JSON cannot represent cyclic data structures and Marshal does nothandle them. Passing cyclic structures to Marshal will result inan error.

#### 定义

Expand Down

0 comments on commit f7b37bf

Please sign in to comment.