我在Go中处理一个json POST,它包含一个包含64位整数的对象数组.当使用json.Unmarshal时,这些值似乎被转换为float64,这不是很有用.
body := []byte(`{"tags":[{"id":4418489049307132905},{"id":4418489049307132906}]}`)
var dat map[string]interface{}
if err := json.Unmarshal(body, &dat); err != nil {
panic(err)
}
tags := dat["tags"].([]interface{})
for i, tag := range tags {
fmt.Println("tag: ", i, " id: ", tag.(map[string]interface{})["id"].(int64))
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在json.Unmarshal的输出中保留原始的int64?
我有一个具有不同数据集的应用程序,具体取决于用户当前选择的公司(当前用于设置会话变量的侧栏上的下拉框).
我的客户表示希望能够同时从单个浏览器处理多个不同的数据集.因此,会议不再削减它.
谷歌搜索似乎意味着获取或发布数据以及每个请求是方式,这是我的第一个猜测.是否有更好/更容易/铁路的方式来实现这一目标?
我有一个排序的弹性搜索直方图聚合,工作正常.
我需要从每个聚合桶的第一个和最后一个文档返回一个字段.
当前查询(ruby风格的语法):
{
query: {
filtered: {
filter: {
bool: {
must: [
{ term: { some_id: 'something' } },
{ range: {
completed_at: {
gte: start,
lte: end
}
}
}
]
}
},
_cache: true,
_cache_key: "special-query"
}
},
aggs: {
intervals: {
histogram: {
field: 'completed_at',
interval: 24.hours.to_i,
min_doc_count: 0,
order: { _key: 'asc' }
},
aggs: {
start_at: { min: { field: 'completed_at' } },
end_at: { max: { field: 'completed_at' } },
price_stats: { …
Run Code Online (Sandbox Code Playgroud)