2020-10-28 golang将正则结果转换为json返回

2020-10-28  本文已影响0人  Rockage

1. 首先test.txt文件长这样:

  -
    name: server1-us
    type: ss
  -
    name: server2-jp
    type: ssr
  -
    name: server3-hk
    type: v2ray
  -

2. 现在我们需要将这个文件进行正则处理,并转换成json格式

package main

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

func main() {

    var str string

    b, err := ioutil.ReadFile("test.txt")
    if err != nil {
    } else {
        str = string(b)
    }

//首先将文件分成三个大段
    var re = regexp.MustCompile(`\s{1,}name[\s\S]*?\s{1,}type.+`)

    matchs := re.FindAllString(str, -1)
    var ssList []map[string]string /*创建map数组 */
    
    for _, matchs := range matchs {
        r := regexp.MustCompile(`name:\s{0,}'{0,1}(.+?)\*{0,1}'{0,1}\s{1,}type:\s{0,}`)
        m := r.FindStringSubmatch(matchs)
                ss := make(map[string]string) //ss是ssList中的一个元素
        ss["name"] = m[1]
        ss["type"] = m[2]
        ssList = append(ssList, ss) //将ss插入ssList
    }
    mjson, _ := json.Marshal(ssList)
    mString := string(mjson)
    fmt.Println(mString)
}

程序输出:

[{"name":"server1-us","type":"ss"}, {"name":"server2-jp","type":"ssr"},{"name":"server3-hk","type":"v2ray"}]

这样,就很容易将结果回传给javascript之类处理了。

上一篇下一篇

猜你喜欢

热点阅读