> 백엔드 개발 > Golang > Golang에서 JSON 데이터를 정렬하고 필터링하는 방법은 무엇입니까?

Golang에서 JSON 데이터를 정렬하고 필터링하는 방법은 무엇입니까?

WBOY
풀어 주다: 2024-06-01 13:38:56
원래의
1233명이 탐색했습니다.

Golang에서 JSON 데이터 정렬 및 필터링: 정렬: sort.Slice 함수를 사용하여 지정된 필드를 기반으로 JSON 데이터를 정렬합니다. 필터링: for 루프 및 조건문을 사용하여 지정된 조건에 따라 JSON 데이터를 필터링합니다. 실제 사례: JSON 파일에서 사용자 정보를 읽고, 나이를 기준으로 내림차순으로 정렬하고, 25세 이상의 사용자를 필터링합니다.

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

Golang에서 JSON 데이터를 정렬하고 필터링하는 방법

JSON(JavaScript Object Notation)은 웹 및 모바일 애플리케이션에서 널리 사용되는 경량의 텍스트 기반 데이터 교환 형식입니다. Golang에서 JSON 데이터를 처리할 때 원하는 정보를 얻기 위해 데이터를 정렬하고 필터링해야 하는 경우가 많습니다.

Sort

sort 패키지를 사용하여 JSON 데이터 정렬: 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}]
}
로그인 후 복사

Filter

for 루프 및 조건문을 사용하여 JSON 데이터 필터링:

[
  {
    "name": "John",
    "age": 25,
    "score": 85.5
  },
  {
    "name": "Mary",
    "age": 28,
    "score": 90.0
  },
  {
    "name": "Bob",
    "age": 23,
    "score": 87.2
  }
]
로그인 후 복사

실용 사례

예를 들어 보겠습니다. 사용자 정보가 포함된 JSON 파일이 있고 사용자를 나이별로 내림차순으로 정렬하고 나이가 25세보다 큰 사용자만 가져오려고 합니다.

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}]
}
로그인 후 복사
🎜🎜Golang 코드: 🎜🎜rrreee

위 내용은 Golang에서 JSON 데이터를 정렬하고 필터링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿