Skip to content

encoding/json: panic: reflect.Set: value of type []uint8 is not assignable to type []main.Uint8 #12921

@kshvakov

Description

@kshvakov

go version go1.5 darwin/amd64
go version go1.5.1 linux/amd64

package main

import (
    "encoding/json"
)

type Uint8 uint8

func main() {

    var sliceIn, sliceOut []Uint8

    for i := 0; i < 20; i++ {

        sliceIn = append(sliceIn, Uint8(i))
    }

    j, _ := json.Marshal(sliceIn)

    json.Unmarshal(j, &sliceOut)
}

output

panic: reflect.Set: value of type []uint8 is not assignable to type []main.Uint8 [recovered]
    panic: interface conversion: string is not error: missing method Error

goroutine 1 [running]:
encoding/json.(*decodeState).unmarshal.func1(0x820275e40)
    /usr/local/go/src/encoding/json/decode.go:145 +0xba
reflect.Value.assignTo(0xdf2c0, 0x8202ae0c0, 0x57, 0x13d0e0, 0xb, 0xde2a0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/reflect/value.go:2158 +0x3be
reflect.Value.Set(0xde2a0, 0x8202ae000, 0xd7, 0xdf2c0, 0x8202ae0c0, 0x57)
    /usr/local/go/src/reflect/value.go:1327 +0x95
encoding/json.(*decodeState).literalStore(0x8202ba000, 0x8202b0024, 0x1e, 0x40, 0xde2a0, 0x8202ae000, 0xd7, 0x0)
    /usr/local/go/src/encoding/json/decode.go:760 +0x14ee
encoding/json.(*decodeState).literal(0x8202ba000, 0xd81e0, 0x8202ae000, 0x16)
    /usr/local/go/src/encoding/json/decode.go:646 +0xe9
encoding/json.(*decodeState).value(0x8202ba000, 0xd81e0, 0x8202ae000, 0x16)
    /usr/local/go/src/encoding/json/decode.go:299 +0x397
encoding/json.(*decodeState).unmarshal(0x8202ba000, 0xd81e0, 0x8202ae000, 0x0, 0x0)
    /usr/local/go/src/encoding/json/decode.go:157 +0x196
encoding/json.Unmarshal(0x8202b0024, 0x1e, 0x40, 0xd81e0, 0x8202ae000, 0x0, 0x0)
    /usr/local/go/src/encoding/json/decode.go:85 +0x12b
main.main()
    /Users/kshvakov/unmarshal_bug.go:20 +0x168
exit status 2

http://play.golang.org/p/ZFlbNkI0H3

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions