feat(Go-Tool): 增加读取json文件方法及其单测类
This commit is contained in:
@@ -23,3 +23,5 @@
|
||||
2020/6/15: 创建Set,实现相关方法
|
||||
|
||||
2020/6/30: ArrayList添加深度复制方法以及单测类、添加Rand随机获取参数方法、RandByWeight根据权重随机获取奖励方法
|
||||
|
||||
2020/7/8: 增加读取json文件方法及其单测类
|
||||
@@ -8,6 +8,7 @@ package file
|
||||
|
||||
import (
|
||||
"Go-Tool/util/file"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
@@ -19,3 +20,60 @@ func TestReadFileLineNum(t *testing.T) {
|
||||
func TestReadFileLineNumExceptEmptyLine(t *testing.T) {
|
||||
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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -9,6 +9,7 @@ package file
|
||||
import (
|
||||
err2 "Go-Tool/err"
|
||||
"bufio"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
@@ -110,3 +111,28 @@ func ReadFileLineNumExceptEmptyLine(filePath string) (int, *err2.FileError) {
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user