package json

import “encoding/json”

json包实现了json对象的编解码,参见RFC 4627。Json对象和go类型的映射关系请参见Marshal和Unmarshal函数的文档。

参见”JSON and Go”获取本包的一个介绍:http://golang.org/doc/articles/json_and_go.html

Index 返回首页

type InvalidUTF8Error func (e *InvalidUTF8Error) Error() string type InvalidUnmarshalError func (e *InvalidUnmarshalError) Error() string type SyntaxError func (e *SyntaxError) Error() string type UnmarshalFieldError func (e *UnmarshalFieldError) Error() string type UnmarshalTypeError func (e *UnmarshalTypeError) Error() string type UnsupportedTypeError func (e *UnsupportedTypeError) Error() string type UnsupportedValueError func (e *UnsupportedValueError) Error() string type MarshalerError func (e *MarshalerError) Error() string type Number func (n Number) Int64() (int64, error) func (n Number) Float64() (float64, error) func (n Number) String() string type RawMessage func (m *RawMessage) MarshalJSON() ([]byte, error) func (m *RawMessage) UnmarshalJSON(data []byte) error type Marshaler type Unmarshaler func Compact(dst *bytes.Buffer, src []byte) error func HTMLEscape(dst *bytes.Buffer, src []byte) func Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error func Marshal(v interface{}) ([]byte, error) func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) func Unmarshal(data []byte, v interface{}) error type Decoder func NewDecoder(r io.Reader) *Decoder func (dec *Decoder) Buffered() io.Reader func (dec *Decoder) UseNumber() func (dec *Decoder) Decode(v interface{}) error type Encoder func NewEncoder(w io.Writer) *Encoder func (enc *Encoder) Encode(v interface{}) error Examples

返回首页

Decoder Indent Marshal RawMessage Unmarshal type InvalidUTF8Error type InvalidUTF8Error struct { S string // 引发错误的完整字符串 } Go 1.2之前版本,当试图编码一个包含非法utf-8序列的字符串时会返回本错误。Go 1.2及之后版本,编码器会强行将非法字节替换为unicode字符U+FFFD来使字符串合法。本错误已不会再出现,但出于向后兼容考虑而保留。

func (*InvalidUTF8Error) Error

func (e *InvalidUTF8Error) Error() string type InvalidUnmarshalError type InvalidUnmarshalError struct { Type reflect.Type } InvalidUnmarshalError用于描述一个传递给解码器的非法参数。(解码器的参数必须是非nil指针)

func (*InvalidUnmarshalError) Error

func (e *InvalidUnmarshalError) Error() string type SyntaxError type SyntaxError struct { Offset int64 // 在读取Offset个字节后出现错误 // 内含隐藏或非导出字段 } SyntaxError表示一个json语法错误。

func (*SyntaxError) Error

func (e *SyntaxError) Error() string type UnmarshalFieldError type UnmarshalFieldError struct { Key string Type reflect.Type Field reflect.StructField } UnmarshalFieldError表示一个json对象的键指向一个非导出字段。(因此不能写入;已不再使用,出于兼容保留)

func (*UnmarshalFieldError) Error

func (e *UnmarshalFieldError) Error() string type UnmarshalTypeError type UnmarshalTypeError struct { Value string // 描述json值:”bool”, “array”, “number -5” Type reflect.Type // 不能转化为的go类型 } UnmarshalTypeError表示一个json值不能转化为特定的go类型的值。

func (*UnmarshalTypeError) Error

func (e *UnmarshalTypeError) Error() string type UnsupportedTypeError type UnsupportedTypeError struct { Type reflect.Type } UnsupportedTypeError表示试图编码一个不支持类型的值。

func (*UnsupportedTypeError) Error

func (e *UnsupportedTypeError) Error() string type UnsupportedValueError type UnsupportedValueError struct { Value reflect.Value Str string } func (*UnsupportedValueError) Error

func (e *UnsupportedValueError) Error() string type MarshalerError type MarshalerError struct { Type reflect.Type Err error } func (*MarshalerError) Error

func (e *MarshalerError) Error() string type Number type Number string Number类型代表一个json数字字面量。

func (Number) Int64

func (n Number) Int64() (int64, error) 将该数字作为int64类型返回。

func (Number) Float64

func (n Number) Float64() (float64, error) 将该数字作为float64类型返回。

func (Number) String

func (n Number) String() string 返回该数字的字面值文本表示。

type RawMessage type RawMessage []byte RawMessage类型是一个保持原本编码的json对象。本类型实现了Marshaler和Unmarshaler接口,用于延迟json的解码或者预计算json的编码。

Example func (*RawMessage) MarshalJSON

func (m RawMessage) MarshalJSON() ([]byte, error) MarshalJSON返回m的json编码。

func (*RawMessage) UnmarshalJSON

func (m RawMessage) UnmarshalJSON(data []byte) error UnmarshalJSON将m设为data的一个拷贝。

type Marshaler type Marshaler interface { MarshalJSON() ([]byte, error) } 实现了Marshaler接口的类型可以将自身序列化为合法的json描述。

type Unmarshaler type Unmarshaler interface { UnmarshalJSON([]byte) error } 实现了Unmarshaler接口的对象可以将自身的json描述反序列化。该方法可以认为输入是合法的json字符串。如果要在方法返回后保存自身的json数据,必须进行拷贝。

func Compact func Compact(dst *bytes.Buffer, src []byte) error Compact函数将json编码的src中无用的空白字符剔除后写入dst。

func HTMLEscape func HTMLEscape(dst *bytes.Buffer, src []byte) HTMLEscape 函数将json编码的src中的<、>、&、U+2028 和U+2029字符替换为\u003c、\u003e、\u0026、\u2028、\u2029 转义字符串,以便json编码可以安全的嵌入HTML的