读取json文件,写入redis,再从redis读取,解析数据
json文件内容:
{ "0x001":{"timestamp":1532432343, "value":0}, "0x002":{"timestamp":1532432343, "value":0}, "0x003":{"timestamp":1532432343, "value":0} }
代码:
package main import ( "github.com/go-redis/redis" "github.com/json-iterator/go" "io/ioutil" "fmt" ) type serviceProxy struct { redis *redis.Client } var Service *serviceProxy func init() { Service = new(serviceProxy) initRedis() } func (s *serviceProxy) Close() { s.redis.Close() } func initRedis() { option, err := redis.ParseURL("redis://:@127.0.0.1:6379") if err != nil { panic(err) } Service.redis = redis.NewClient(option) println("redis services started") } type prse struct { Timestamp int64 `json:"timestamp"` Value float64 `json:"value"` } func main() { defer func() { Service.redis.Close() }() // 读取json文件 b, err := ioutil.ReadFile("./js.json") if err != nil { println(11) } // 解析 var resp interface{} jsoniter.Unmarshal(b, &resp) // 转换成字符串 strJson,_ := jsoniter.MarshalToString(resp) // 保存到redis Service.redis.HSet("mos.ups","id1", strJson) // 从redis读取 s := Service.redis.HGetAll("mos.ups").Val() fmt.Println(55, s) // 解析从redis中读取的数据 result := make(map[string]map[string]prse, 0) var parse map[string]prse for k, val := range s { jsoniter.Unmarshal([]byte(val), &parse) result[k] = parse } strResult, _ := jsoniter.MarshalToString(result) fmt.Println(123, strResult) }