0
找到地圖嵌套的JSON數據值
我想在地圖類型的接收使用MGO從我的MongoDB的數據[]map[string]interface{}
Golang從MongoDB的
我的JSON看起來是這樣的 -
{
"_id":"string",
"brandId":123,
"category":{
"television":[
{
"cat":"T1",
"subCategory":[
{
"subCat":"T1A TV",
"warrantyPeriod":6
}
],
"warrantyPeriod":12
},
{
"cat":"T2",
"subCategory":[
{
"subCat":"T2A",
"warrantyPeriod":18
},
{
"subCat":"T2B",
"warrantyPeriod":9
}
],
"warrantyPeriod":15
},
{
"cat":"T3",
"subCategory":[
{
"subCat":"T3A",
"warrantyPeriod":3
},
{
"subCat":"T3B",
"warrantyPeriod":5
},
{
"subCat":"T3C",
"warrantyPeriod":7
},
{
"subCat":"T3D",
"warrantyPeriod":11
}
],
"warrantyPeriod":4
}
],
"television_warrantyPeriod":24
},
"title":"BrandName"
}
理想情況下,我會傳入類別名稱,即'電視'和cat
和subCat
值,這些值可以是可選的。
例如,像這樣 -
{
"categorySlug": "television",
"brandId": "123",
"model": "T2"
}
在這種情況下,我希望找到'15',這是T2的warrantyPeriod值,如果沒有指定T2A或T2B。
我的查詢功能這個樣子 -
var data map[string]string
err := json.NewDecoder(r.Body).Decode(&data)
log.Println(err)
var buffer bytes.Buffer
buffer.WriteString("category.")
buffer.WriteString(data["categorySlug"])
brandId, _ := strconv.Atoi(data["brandId"])
concernedbrandandcategory := database.GetMappedFields("Brands", bson.M{"brandId": brandId, buffer.String(): bson.M{"$exists": true}}, bson.M{buffer.String(): 1})
categorymap := concernedbrandandcategory[0]
log.Println(categorymap["category"]["television"], reflect.TypeOf(categorymap))
我GetMappedFields功能看起來是這樣的 -
func GetMappedFields(collectionName string, query interface{}, selector interface{}) (result []map[string]interface{}) {
MgoSession.DB(Dbname).C(collectionName).Find(query).Select(selector).All(&result)
return
}
我只是不能環繞此嵌套結構,有時會返回一個我的頭地圖,有時還有一個界面! 任何幫助將不勝感激!
真棒!這是我需要的! –