如何插入多维数组

时间:2013-06-10 14:32:52

标签: mongodb go mgo

想要保存以下格式的数据

{"_ibj_id":"1","url_id":'1',"url":{"0":"http://0.com","1":"http:://1.com"}}

看看我的代码,

type db_list struct {
    Url_id int
    Url    map[int]string
}
func list(table *mgo.Collection) {

    var doc *goquery.Document

    var e error

    for i := 1628644; i > 1628643; i-- {

        if doc, e = goquery.NewDocument("http://www.120ask.com/list/all/" + strconv.Itoa(i)); e != nil {

            panic(e.Error())

        }

        var save_list db_list

        save_list.Url_id = i

        save_list.Url = make(map[int]string)

        //fmt.Println("%s", doc.Text())

        doc.Find(".q-quename").Each(func(n int, s *goquery.Selection) {

            href, isTrue := s.Attr("href")

            if isTrue {

                save_list.Url[n] = href

                fmt.Println("%D : %s", n, save_list.Url[n])

            }

        })

        fmt.Println("%D", len(save_list.Url))

        //save database

        table.Insert(save_list)

    }

}

数据库最终会保存 请查看附件中的图片,是保存数据的格式,保存属性的URL值1 enter image description here

2 个答案:

答案 0 :(得分:0)

您可能正在使用JSON Unmarshal

中的encoding/json功能

{"_ibj_id":"1","url_id":'1',"url":{"0":"http://0.com","1":"http:://1.com"}}技术上无效的JSON,因为url_id值周围的单引号('1'应该是"1")但除此之外,它应该很好地映射到以下结构:

{
id string
url_id string
urls []string
}

但您可能需要尝试这些类型。根据{{​​1}}函数的文档,它将为每种JSON类型使用以下Go类型:

Unmarshal

我强烈建议您阅读Andrew Gerrands Blog Post "JSON and Go"

答案 1 :(得分:0)

我不清楚你到底想要做什么。我注意到的一件事是,在你想要的格式中,Url的键是字符串值,而在Go中它们是整数。您可以尝试将Url的类型更改为map[string]string,看看是否能解决您的问题。