Home  >  Article  >  Backend Development  >  How to parse JSON date using regular expressions in Go?

How to parse JSON date using regular expressions in Go?

WBOY
WBOYOriginal
2024-06-03 15:27:08436browse

How to parse JSON date using regular expressions? Use the regular expression "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{ 2})(.\d+)?Z$" matches JSON dates in the format "YYYY-MM-DDTHH:MM:SS.mmmZ". Parse the date through the regexp.MatchString function and print "Date parsed successfully" when parsed successfully.

如何在 Go 中使用正则表达式解析 JSON 日期?

How to use regular expressions to parse JSON dates in Go

Go provides a powerful regular expression library that can be used Parse and process complex text, including JSON dates. This article will guide you step by step in parsing JSON dates with regular expressions and provide a practical case.

Regular expression syntax

The following regular expression can be used to match JSON dates:

/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?Z$/

This expression can match the format "YYYY-MM -DDTHH:MM:SS.mmmZ" date, where:

  • YYYY: Year
  • MM: Month
  • DD: Date
  • HH: Hours
  • MM: Minutes
  • SS: Seconds
  • mmm: Milliseconds (optional)
  • Z: Zulu time zone

Go code

The following Go code shows how to use regular expressions to parse JSON dates:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    date := "2023-07-04T13:30:00.123Z"

    matched, err := regexp.MatchString(`^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?Z$`, date)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    if matched {
        fmt.Println("Date parsed successfully")
    } else {
        fmt.Println("Invalid date format")
    }
}

Practical case

Suppose you have a JSON file named "dates.json" which contains an array of dates:

{
  "dates": [
    "2023-07-04T13:30:00.123Z",
    "2023-07-05T10:00:00Z",
    "2023-07-06T15:15:00Z"
  ]
}

Here is the modified code to parse the dates in the JSON file:

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "regexp"
)

func main() {
    data, err := ioutil.ReadFile("dates.json")
    if err != nil {
        log.Fatal(err)
    }

    type DateResponse struct {
        Dates []string `json:"dates"`
    }

    var datesResponse DateResponse
    if err := json.Unmarshal(data, &datesResponse); err != nil {
        log.Fatal(err)
    }

    for _, date := range datesResponse.Dates {
        matched, err := regexp.MatchString(`^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?Z$`, date)
        if err != nil {
            fmt.Println("Error:", err)
        }

        if matched {
            fmt.Println("Date parsed successfully")
        } else {
            fmt.Println("Invalid date format:", date)
        }
    }
}

The above is the detailed content of How to parse JSON date using regular expressions in Go?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn