resource type is interface, may be string, or []byte, all handle with json Marshal is not right
var resourceValue []byte
switch rv := resource.(type) {
case string:
resourceValue = []byte(rv)
case []byte:
resourceValue = rv
default:
resourceValue, err = json.Marshal(resource)
if err != nil {
return nil, err
}
}