json - 将两个相同文件的json文件合二为一
问题描述
我有这个版本的代码:我需要它来更改代码的某些部分或只是帮助我,因为我检查了谷歌中的所有链接。
data, err := ioutil.ReadFile("firstfile.json")
if err != nil {
fmt.Print(err)
}
data1, err := ioutil.ReadFile("secondfile.json")
if err != nil {
fmt.Print(err)
}
var migrations map[string]interface{}
var migrations1 map[string]interface{}
err = json.Unmarshal([]byte(data), &migrations)
err = json.Unmarshal([]byte(data1), &migrations1)
if err != nil {
log.Println("Error:", err)
}
//fmt.Println(migrations)
//fmt.Println(migrations1)
mig := migrations["date"]
mig1 := migrations1["date"]
layout := "2006-01-02T15:04:05.000Z"
str := fmt.Sprint(mig)
str1 := fmt.Sprint(mig1)
t, err := time.Parse(layout, str)
t1, err := time.Parse(layout, str1)
if err != nil {
fmt.Println(err)
}
//fmt.Println(t, t1)
firsthour := t.Hour()
secondhour := t1.Hour()
if firsthour == secondhour {
result := []map[string]interface{}{}
migrations3 := make(map[string]interface{})
for k, v := range migrations {
if _, ok := migrations[k]; ok {
migrations3[k] = v
}
}
for k, v := range migrations1 {
if _, ok := migrations1[k]; ok {
migrations3[k] = v
}
}
result = append(result, migrations, migrations1)
fmt.Println(result)
b, err := json.Marshal(result)
if err != nil {
fmt.Println(err)
}
os.Stdout.Write(b)
} else {
err = json.Unmarshal([]byte(data), &migrations)
err = json.Unmarshal([]byte(data1), &migrations1)
fmt.Println(migrations, migrations)
}
}
最后我得到了:
[{"data":"is nice",
"date":"2012-04-23T18:24:59.511Z",
"name":"Kate"},
{"data":"is a good person",
"date":"2012-04-23T18:25:00.511Z",
"name":"Gleison"}]
但我想得到什么:
{
"name":["kate","gleison"],
"date":"2012-04-23T18:00:00.000Z",
"data":["is nice","is a good person"]
}
你能帮我改变我的代码的某些部分来修复它吗?
我的 2 个 json 文件:
{
"name":"Kate",
"date":"2012-04-23T18:24:59.511Z",
"data":"is nice"
},
{
"name":"Gleison",
"date":"2012-04-23T18:25:00.511Z",
"data":"is a good person"
}
解决方案
migrations, migrations1 := make(map[string]interface{}), make(map[string]interface{})
data := `{ "name":"Kate", "date":"2012-04-23T18:24:59.511Z", "data":"is nice" }`
data1 := `{ "name":"Gleison", "date":"2012-04-23T18:25:00.511Z", "data":"is a good person" }`
err := json.Unmarshal([]byte(data), &migrations)
if err != nil {
panic(err)
}
err = json.Unmarshal([]byte(data1), &migrations1)
if err != nil {
panic(err)
}
layout := "2006-01-02T15:04:05.000Z"
t, err := time.Parse(layout, fmt.Sprint(migrations["date"]))
t1, err := time.Parse(layout, fmt.Sprint(migrations1["date"]))
if err != nil {
fmt.Println(err)
}
firsthour := t.Hour()
secondhour := t1.Hour()
if firsthour == secondhour {
result := make(map[string][]interface{})
for k, v := range migrations {
result[k] = append(result[k], v)
}
for k, v := range migrations1 {
result[k] = append(result[k], v)
}
fmt.Println(result)
b, err := json.Marshal(result)
if err != nil {
fmt.Println(err)
}
os.Stdout.Write(b)
} else {
err = json.Unmarshal([]byte(data), &migrations)
if err != nil {
panic(err)
}
err = json.Unmarshal([]byte(data1), &migrations1)
if err != nil {
panic(err)
}
fmt.Println(migrations, migrations)
}
推荐阅读
- sql - 如何加入选择顶部
- javascript - 在javascript中使用for循环获取多个提交
- php - 如何在wordpress中停止重定向到首页网址
- docker - 使用 Docker 自动构建的多镜像
- android - 如果相同的数据同时以不同的方式显示,如何触发android视图更新?
- javascript - html5拖放dropzone舞蹈
- javascript - Internet Explorer 中不显示 XML 数据
- c# - 在 Selenium C# 中为多个项目使用单个文件中的相同浏览器类型
- python - 如何分离存储在python列表中的不同尺寸的图像
- r - 从数据框中选择子序列