我的JSON长这样:
[
{
"key1": 1,
"key2": "val2"
},
{
"key1": 2,
"key2": "val2"
}
]
这个json是以字符串格式呈现的,我想将json数组中的对象作为单独的记录插入到mongodb中。我参考了https://labix.org/mgo,但没有找到足够的关于上述用例的示例。希望能听取您的想法并找到解决方案。
我的JSON长这样:
[
{
"key1": 1,
"key2": "val2"
},
{
"key1": 2,
"key2": "val2"
}
]
这个json是以字符串格式呈现的,我想将json数组中的对象作为单独的记录插入到mongodb中。我参考了https://labix.org/mgo,但没有找到足够的关于上述用例的示例。希望能听取您的想法并找到解决方案。
解析 JSON 到 []interface{} 并将结果 插入 数据库。假设 c
是一个 mgo.Collection,data
是包含 JSON 值的 []byte,请使用以下代码:
var v []interface{}
if err := json.Unmarshal(data, &v); err != nil {
// handle error
}
if err := c.Insert(v...); err != nil {
// handle error
}
'[[1,"a","b",2,"000000",[[1,2,3],[1,2,3]],"\"x","[y","'z",[[1,2,3],[1,2,3]]]]'
将其作为json存储在mongodb中:
{datum: [[1,"a","b",2,"000000",[[1,2,3],[1,2,3]],"\"x","[y","'z",[[1,2,3],[1,2,3]]]]}
package main
import (
"strings"
"context"
"encoding/json"
"fmt"
"log"
"net/http"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
)
type datum2 struct {
Datum interface{} `json:datum`
}
var userCollection = db().Database("goTest").Collection("users") // get collection "users" from db() which returns *mongo.Client
func typeinterface2mongo() {
var datum2 datum2_instance
var interfacevalue []interface{}
test_string := `[[1,"a","b",2,"000000",[[1,2,3],[1,2,3]],"\"x","[y","'z",[[1,2,3],[1,2,3]]]]`
if err := json.Unmarshal([]byte(test_string), &interfacevalue); err != nil {
fmt.Println(err)
return
}
fmt.Println(test_string)
fmt.Println(interfacevalue)
datum2_instance.Datum=interfacevalue
userCollection.InsertOne(context.TODO(), datum2_instance)
fmt.Println(datum2_instance)
fmt.Println(datum2_instance.Datum)
}
type JsonFileResponse struct {
JsonData string `bson:"JsonData " json:"JsonData"`
}
step 1: jsonData, err := xml2json.Convert(xml)
if err != nil {
panic("getting error while converting xml to json",err)
}
step 2: session need to open by using your mongodb credentials.
collection := session.DB("database name").C("Collection Name")
err = collection.Insert(JsonFileResponse{JsonData :json.String()})
if err != nil {
log.Fatal(err)
}