feat(Go-Tool): 增加读取json文件方法及其单测类
This commit is contained in:
@@ -22,4 +22,6 @@
|
|||||||
|
|
||||||
2020/6/15: 创建Set,实现相关方法
|
2020/6/15: 创建Set,实现相关方法
|
||||||
|
|
||||||
2020/6/30: ArrayList添加深度复制方法以及单测类、添加Rand随机获取参数方法、RandByWeight根据权重随机获取奖励方法
|
2020/6/30: ArrayList添加深度复制方法以及单测类、添加Rand随机获取参数方法、RandByWeight根据权重随机获取奖励方法
|
||||||
|
|
||||||
|
2020/7/8: 增加读取json文件方法及其单测类
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
@@ -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 (
|
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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user