Isih dan tapis data JSON dalam Golang: Isih: Gunakan fungsi isihan.Slice untuk mengisih data JSON berdasarkan medan yang ditentukan. Penapisan: Gunakan untuk gelung dan pernyataan bersyarat untuk menapis data JSON berdasarkan syarat yang ditentukan. Kes praktikal: Baca maklumat pengguna daripada fail JSON, susun mengikut umur dalam tertib menurun dan tapis pengguna yang berumur lebih daripada 25 tahun.
Cara mengisih dan menapis data JSON dalam Golang
JSON (JavaScript Object Notation) ialah format pertukaran data berasaskan teks yang ringan yang digunakan secara meluas dalam aplikasi web dan mudah alih . Apabila memproses data JSON di Golang, kami selalunya perlu mengisih dan menapis data untuk mendapatkan maklumat yang kami inginkan.
Isih
Gunakan pakej sort
包对 JSON 数据进行排序:
package main import ( "encoding/json" "fmt" "sort" ) type Person struct { Name string Age int Score float64 } func main() { data := []Person{ {"John", 25, 85.5}, {"Mary", 28, 90.0}, {"Bob", 23, 87.2}, } // 根据 Age 字段升序排序 sort.Slice(data, func(i, j int) bool { return data[i].Age < data[j].Age }) fmt.Println(data) // 输出:[{Bob 23 87.2} {John 25 85.5} {Mary 28 90}] // 根据 Score 字段降序排序 sort.Slice(data, func(i, j int) bool { return data[i].Score > data[j].Score }) fmt.Println(data) // 输出:[{Mary 28 90} {Bob 23 87.2} {John 25 85.5}] }
过滤
使用 for
package main import ( "encoding/json" "fmt" ) type Person struct { Name string Age int Score float64 } func main() { data := []Person{ {"John", 25, 85.5}, {"Mary", 28, 90.0}, {"Bob", 23, 87.2}, } // 过滤出年龄大于 25 的人员 filteredData := []Person{} for _, person := range data { if person.Age > 25 { filteredData = append(filteredData, person) } } fmt.Println(filteredData) // 输出:[{Mary 28 90}] }
Tapis
Gunakanuntuk
gelung dan pernyataan bersyarat untuk menapis data JSON:
[ { "name": "John", "age": 25, "score": 85.5 }, { "name": "Mary", "age": 28, "score": 90.0 }, { "name": "Bob", "age": 23, "score": 87.2 } ]
Kes Praktikal
Mari kami pertimbangkan satu senario: anda mempunyai fail JSON yang mengandungi maklumat pengguna dan anda ingin mengisih pengguna mengikut umur dalam tertib menurun dan hanya mendapatkan pengguna yang berumur lebih daripada 25 tahun.Fail JSON:
🎜package main import ( "encoding/json" "fmt" "io/ioutil" "os" "sort" ) type Person struct { Name string Age int Score float64 } func main() { // 从文件读取 JSON 数据 jsonFile, err := os.Open("users.json") if err != nil { fmt.Println(err) return } defer jsonFile.Close() byteValue, err := ioutil.ReadAll(jsonFile) if err != nil { fmt.Println(err) return } // 解码 JSON 数据 var data []Person err = json.Unmarshal(byteValue, &data) if err != nil { fmt.Println(err) return } // 对数据进行排序和过滤 sort.Slice(data, func(i, j int) bool { return data[i].Age > data[j].Age }) filteredData := []Person{} for _, person := range data { if person.Age > 25 { filteredData = append(filteredData, person) } } // 打印结果 fmt.Println(filteredData) // 输出:[{Mary 28 90}] }
Atas ialah kandungan terperinci Bagaimana untuk mengisih dan menapis data JSON di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!