浏览代码

Be more flexible in UUID JSON unmarshaling

Josh Wright 11 年之前
父节点
当前提交
2e81e1acec
共有 1 个文件被更改,包括 4 次插入3 次删除
  1. 4 3
      uuid.go

+ 4 - 3
uuid.go

@@ -14,6 +14,7 @@ import (
 	"fmt"
 	"io"
 	"net"
+	"strings"
 	"sync/atomic"
 	"time"
 )
@@ -216,12 +217,12 @@ func (u UUID) MarshalJSON() ([]byte, error) {
 
 // Unmarshaling for JSON
 func (u *UUID) UnmarshalJSON(data []byte) error {
-	str := string(data)
-	if len(str) != 38 {
+	str := strings.Trim(string(data), `"`)
+	if len(str) > 36 {
 		return fmt.Errorf("invalid JSON UUID %s", str)
 	}
 
-	parsed, err := ParseUUID(str[1:37])
+	parsed, err := ParseUUID(str)
 	if err == nil {
 		copy(u[:], parsed[:])
 	}