소스 검색

Merge branch 'master' of https://github.com/json-iterator/go

Tao Wen 8 년 전
부모
커밋
f50c4cfbbe
3개의 변경된 파일53개의 추가작업 그리고 1개의 파일을 삭제
  1. 10 0
      .idea/libraries/Go_SDK.xml
  2. 27 0
      example_test.go
  3. 16 1
      feature_adapter.go

+ 10 - 0
.idea/libraries/Go_SDK.xml

@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="Go SDK">
+    <CLASSES>
+      <root url="file:///usr/local/go/src" />
+    </CLASSES>
+    <SOURCES>
+      <root url="file:///usr/local/go/src" />
+    </SOURCES>
+  </library>
+</component>

+ 27 - 0
example_test.go

@@ -0,0 +1,27 @@
+package jsoniter_test
+
+import (
+	"fmt"
+	"github.com/json-iterator/go"
+	"os"
+)
+
+func ExampleMarshal() {
+	type ColorGroup struct {
+		ID     int
+		Name   string
+		Colors []string
+	}
+	group := ColorGroup{
+		ID:     1,
+		Name:   "Reds",
+		Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
+	}
+	b, err := jsoniter.Marshal(group)
+	if err != nil {
+		fmt.Println("error:", err)
+	}
+	os.Stdout.Write(b)
+	// Output:
+	// {"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}
+}

+ 16 - 1
feature_adapter.go

@@ -5,7 +5,10 @@ import (
 	"bytes"
 )
 
-// Unmarshal adapts to json/encoding APIs
+// Unmarshal adapts to json/encoding Unmarshal API
+//
+// Unmarshal parses the JSON-encoded data and stores the result in the value pointed to by v.
+// Refer to https://godoc.org/encoding/json#Unmarshal for more information
 func Unmarshal(data []byte, v interface{}) error {
 	data = data[:lastNotSpacePos(data)]
 	iter := ParseBytes(data)
@@ -81,6 +84,10 @@ func UnmarshalAnyFromString(str string) (Any, error) {
 	return nil, iter.Error
 }
 
+// Marshal adapts to json/encoding Marshal API
+//
+// Marshal returns the JSON encoding of v, adapts to json/encoding Marshal API
+// Refer to https://godoc.org/encoding/json#Marshal for more information
 func Marshal(v interface{}) ([]byte, error) {
 	buf := &bytes.Buffer{}
 	stream := NewStream(buf, 512)
@@ -100,11 +107,19 @@ func MarshalToString(v interface{}) (string, error) {
 	return string(buf), nil
 }
 
+// NewDecoder adapts to json/stream NewDecoder API.
+//
+// NewDecoder returns a new decoder that reads from r.
+//
+// Instead of a json/encoding Decoder, an AdaptedDecoder is returned
+// Refer to https://godoc.org/encoding/json#NewDecoder for more information
 func NewDecoder(reader io.Reader) *AdaptedDecoder {
 	iter := Parse(reader, 512)
 	return &AdaptedDecoder{iter}
 }
 
+// AdaptedDecoder reads and decodes JSON values from an input stream.
+// AdaptedDecoder provides identical APIs with json/stream Decoder (Token() and UseNumber() are in progress)
 type AdaptedDecoder struct {
 	iter *Iterator
 }