feat(Go-Tool): 增加读取json文件方法及其单测类

This commit is contained in:
huangzj
2020-07-08 11:15:50 +08:00
parent d1d47051d6
commit adb5f7f78e
4 changed files with 281 additions and 1 deletions
+2
View File
@@ -23,3 +23,5 @@
2020/6/15: 创建Set,实现相关方法 2020/6/15: 创建Set,实现相关方法
2020/6/30: ArrayList添加深度复制方法以及单测类、添加Rand随机获取参数方法、RandByWeight根据权重随机获取奖励方法 2020/6/30: ArrayList添加深度复制方法以及单测类、添加Rand随机获取参数方法、RandByWeight根据权重随机获取奖励方法
2020/7/8: 增加读取json文件方法及其单测类
+58
View File
@@ -8,6 +8,7 @@ package file
import ( import (
"Go-Tool/util/file" "Go-Tool/util/file"
"encoding/json"
"fmt" "fmt"
"testing" "testing"
) )
@@ -19,3 +20,60 @@ func TestReadFileLineNum(t *testing.T) {
func TestReadFileLineNumExceptEmptyLine(t *testing.T) { func TestReadFileLineNumExceptEmptyLine(t *testing.T) {
fmt.Println(file.ReadFileLineNumExceptEmptyLine("F:\\Go个人代码\\src\\Go-Tool\\test\\emptyDirTest\\1\\11.txt")) fmt.Println(file.ReadFileLineNumExceptEmptyLine("F:\\Go个人代码\\src\\Go-Tool\\test\\emptyDirTest\\1\\11.txt"))
} }
func TestReadJsonFile(t *testing.T) {
content, _ := file.ReadJsonFile("F:\\Go个人代码\\src\\Go-Tool\\test\\file\\json_file_test_mode.json")
fmt.Println(content)
var testMode JsonTestMode
_ = json.Unmarshal([]byte(content), &testMode)
for _, r := range testMode.RareNumAward {
fmt.Println(r.Num)
fmt.Println()
for _, r1 := range r.Award {
fmt.Println(fmt.Sprintf("%d %d", r1[0], r1[1]))
}
}
}
//被读取Json文件的测试结构体
type JsonTestMode struct {
CandleLightingReward CandleLightingReward
Cake []Cake
RareNumAward []RareNumAward
CommonNumAward [][]int
DailyAwardPool [][]int
DailyExtraction []DailyExtraction
FinalAward [][]int
CandleNumStart int
CandleNumInterval int
DiamondNum int
ThemeId int
}
type CandleLightingReward struct {
Num int
AwardPool [][]int
}
type Cake struct {
Level int
CandleNum int
Award [][]int
}
type RareNumAward struct {
Num int
Award [][]int
}
type DailyExtraction struct {
Day int
Num int
}
+194
View File
@@ -0,0 +1,194 @@
{
"CandleLightingReward": {
"Num": 1,
"AwardPool": [
[522, 1, 20],
[520, 1, 20],
[529, 1, 20],
[215, 1, 20],
[508, 1, 20]
]
},
"Cake": [{
"Level": 1,
"CandleNum": 600000,
"Award": [
[303, 1],
[221, 1],
[522, 1],
[520, 1],
[215, 1],
[505, 1]
]
}, {
"Level": 2,
"CandleNum": 400000,
"Award": [
[529, 4],
[221, 1],
[522, 1],
[520, 1],
[215, 1],
[505, 1]
]
}, {
"Level": 3,
"CandleNum": 200000,
"Award": [
[529, 3],
[221, 1],
[522, 1],
[520, 1],
[215, 1],
[505, 1]
]
}, {
"Level": 4,
"CandleNum": 150000,
"Award": [
[529, 2],
[221, 1],
[522, 1],
[520, 1],
[215, 1],
[505, 1]
]
}, {
"Level": 5,
"CandleNum": 100000,
"Award": [
[529, 2],
[221, 1],
[522, 1],
[520, 1],
[215, 1],
[505, 1]
]
}, {
"Level": 6,
"CandleNum": 50000,
"Award": [
[529, 1],
[221, 1],
[522, 1],
[520, 1],
[215, 1],
[505, 1]
]
}],
"RareNumAward": [{
"Num": 2,
"Award": [
[303, 1],
[220, 1],
[221, 1],
[522, 2],
[520, 2]
]
}, {
"Num": 22,
"Award": [
[303, 1],
[220, 1],
[221, 1],
[522, 3],
[520, 3]
]
}, {
"Num": 222,
"Award": [
[303, 2],
[220, 1],
[221, 1],
[522, 3],
[520, 3]
]
}, {
"Num": 2222,
"Award": [
[303, 2],
[220, 2],
[221, 2],
[522, 3],
[520, 3]
]
}, {
"Num": 22222,
"Award": [
[303, 2],
[220, 2],
[221, 3],
[522, 5],
[520, 5]
]
}, {
"Num": 222222,
"Award": [
[303, 3],
[220, 2],
[221, 3],
[522, 5],
[520, 5]
]
}, {
"Num": 2222222,
"Award": [
[581, 1],
[220, 3],
[221, 3],
[522, 5],
[520, 5]
]
}],
"CommonNumAward": [
[215, 2],
[522, 1],
[520, 1]
],
"DailyAwardPool": [
[522, 1, 13],
[520, 1, 13],
[529, 1, 13],
[215, 1, 13],
[221, 1, 13],
[236, 1, 11],
[505, 1, 11],
[506, 1, 10]
],
"DailyExtraction": [{
"Day": 1,
"Num": 1
}, {
"Day": 2,
"Num": 1
}, {
"Day": 3,
"Num": 2
}, {
"Day": 4,
"Num": 2
}, {
"Day": 5,
"Num": 2
}, {
"Day": 6,
"Num": 3
}, {
"Day": 7,
"Num": 3
}],
"FinalAward": [
[565, 2],
[303, 2],
[220, 1],
[522, 1],
[520, 1],
[301, 1],
[236, 1],
[221, 1]
],
"CandleNumStart": 3,
"CandleNumInterval": 10,
"DiamondNum": 40,
"ThemeId": 6
}
+26
View File
@@ -9,6 +9,7 @@ package file
import ( import (
err2 "Go-Tool/err" err2 "Go-Tool/err"
"bufio" "bufio"
"encoding/json"
"fmt" "fmt"
"io" "io"
"io/ioutil" "io/ioutil"
@@ -110,3 +111,28 @@ func ReadFileLineNumExceptEmptyLine(filePath string) (int, *err2.FileError) {
} }
return num, nil return num, nil
} }
//读取json文件内容
//这边发现就是说如果按照正常的文件读取方式来读取json文件,读取到的内容是乱码的
//所以这边通过加解码的方式来读取,返回一个json串出去
//外部的调用者通过解析转换成对应的结构体对象
//@param filePath 文件路径
func ReadJsonFile(filePath string) (string, error) {
filePtr, err := os.Open(filePath)
if err != nil {
return "", err
}
defer filePtr.Close()
decoder := json.NewDecoder(filePtr)
sMap := make(map[string]interface{}, 0)
err = decoder.Decode(&sMap)
if err != nil {
return "", err
}
bs, err := json.Marshal(sMap)
if err != nil {
return "", err
}
return string(bs), nil
}