Wie sortiere und filtere ich JSON-Daten in Golang?

WBOY
Freigeben: 2024-06-01 13:38:56
Original
1199 Leute haben es durchsucht

JSON-Daten in Golang sortieren und filtern: Sortieren: Verwenden Sie die Funktion sort.Slice, um JSON-Daten basierend auf angegebenen Feldern zu sortieren. Filterung: Verwenden Sie for-Schleifen und bedingte Anweisungen, um JSON-Daten basierend auf angegebenen Bedingungen zu filtern. Praxisfall: Benutzerinformationen aus einer JSON-Datei auslesen, absteigend nach Alter sortieren und Benutzer herausfiltern, die älter als 25 sind.

如何在 Golang 中对 JSON 数据进行排序和过滤?

So sortieren und filtern Sie JSON-Daten in Golang

JSON (JavaScript Object Notation) ist ein leichtes, textbasiertes Datenaustauschformat, das in Web- und Mobilanwendungen weit verbreitet ist. Bei der Verarbeitung von JSON-Daten in Golang müssen wir die Daten häufig sortieren und filtern, um die gewünschten Informationen zu erhalten.

Sortieren

Verwenden Sie das sort-Paket, um JSON-Daten zu sortieren: 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}]
}
Nach dem Login kopieren

过滤

使用 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}]
}
Nach dem Login kopieren

Filter

Verwenden Sie for-Schleifen und bedingte Anweisungen, um JSON-Daten zu filtern:

[
  {
    "name": "John",
    "age": 25,
    "score": 85.5
  },
  {
    "name": "Mary",
    "age": 28,
    "score": 90.0
  },
  {
    "name": "Bob",
    "age": 23,
    "score": 87.2
  }
]
Nach dem Login kopieren

Praktischer Fall

Betrachten wir ein Szenario: Sie haben eine JSON-Datei mit Benutzerinformationen und möchten die Benutzer in absteigender Reihenfolge nach Alter sortieren und nur die Benutzer erhalten, deren Alter größer als 25 ist.

JSON-Datei:

🎜
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}]
}
Nach dem Login kopieren
🎜🎜Golang-Code: 🎜🎜rrreee

Das obige ist der detaillierte Inhalt vonWie sortiere und filtere ich JSON-Daten in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!