Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.2 KiB
38 lines
1.2 KiB
// Copyright 2012-present Oliver Eilhard. All rights reserved. |
|
// Use of this source code is governed by a MIT-license. |
|
// See http://olivere.mit-license.org/license.txt for details. |
|
|
|
package elastic |
|
|
|
import ( |
|
"bytes" |
|
"encoding/json" |
|
) |
|
|
|
// Decoder is used to decode responses from Elasticsearch. |
|
// Users of elastic can implement their own marshaler for advanced purposes |
|
// and set them per Client (see SetDecoder). If none is specified, |
|
// DefaultDecoder is used. |
|
type Decoder interface { |
|
Decode(data []byte, v interface{}) error |
|
} |
|
|
|
// DefaultDecoder uses json.Unmarshal from the Go standard library |
|
// to decode JSON data. |
|
type DefaultDecoder struct{} |
|
|
|
// Decode decodes with json.Unmarshal from the Go standard library. |
|
func (u *DefaultDecoder) Decode(data []byte, v interface{}) error { |
|
return json.Unmarshal(data, v) |
|
} |
|
|
|
// NumberDecoder uses json.NewDecoder, with UseNumber() enabled, from |
|
// the Go standard library to decode JSON data. |
|
type NumberDecoder struct{} |
|
|
|
// Decode decodes with json.Unmarshal from the Go standard library. |
|
func (u *NumberDecoder) Decode(data []byte, v interface{}) error { |
|
dec := json.NewDecoder(bytes.NewReader(data)) |
|
dec.UseNumber() |
|
return dec.Decode(v) |
|
}
|
|
|