Sort and filter JSON data in Golang: Sort: Use the sort.Slice function to sort JSON data based on specified fields. Filtering: Use for loops and conditional statements to filter JSON data based on specified conditions. Practical case: Read user information from a JSON file, sort by age in descending order and filter out users older than 25.
How to sort and filter JSON data in Golang
JSON (JavaScript Object Notation) is a lightweight , a text-based data exchange format that is widely used in web and mobile applications. When processing JSON data in Golang, we often need to sort and filter the data to get the information we want.
Sort
Use the sort
package to sort JSON data:
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}] }
Filter
Use for
loops and conditional statements to filter JSON data:
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}] }
Practical case
Let us consider such a scenario: You have a JSON file containing user information and you want to sort the users by age in descending order and get only users whose age is greater than 25.
JSON file:
[ { "name": "John", "age": 25, "score": 85.5 }, { "name": "Mary", "age": 28, "score": 90.0 }, { "name": "Bob", "age": 23, "score": 87.2 } ]
Golang code:
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}] }
The above is the detailed content of How to sort and filter JSON data in Golang?. For more information, please follow other related articles on the PHP Chinese website!