JSON解析
[
{
“id”: “1fde093d2f096844”,
“type”: “tab”,
“label”: “flow-modbus”
},
{
“id”: “b9339cddf4cae05a”,
“type”: “modbus-client”,
“name”: “modbus-server”,
“clienttype”: “tcp”,
“bufferCommands”: true,
“stateLogEnabled”: false,
“queueLogEnabled”: false,
“tcpHost”: “192.168.101.2XX”,
“tcpPort”: “502”,
“tcpType”: “DEFAULT”,
“serialPort”: “/dev/ttyUSB”,
“serialType”: “RTU-BUFFERD”,
“serialBaudrate”: “9600”,
“serialDatabits”: “8”,
“serialStopbits”: “1”,
“serialParity”: “none”,
“serialConnectionDelay”: “100”,
“serialAsciiResponseStartDelimiter”: “0x3A”,
“unit_id”: “1”,
“commandDelay”: “1”,
“clientTimeout”: “1000”,
“reconnectOnTimeout”: true,
“reconnectTimeout”: “2000”,
“parallelUnitIdsAllowed”: true
}
]
func HandleJson(device component_node.FlowDevice,jsonFile string) []byte {
fmt.Println(os.Getwd())
// Read json buffer from jsonFile
tmpByteValue, err := ioutil.ReadFile(jsonFile)
if err != nil {
logrus.Error(err.Error())
}
var jsonObj []interface{}
eee := json.Unmarshal(tmpByteValue, &jsonObj)
fmt.Println("抓取结果", jsonObj, eee)
//这里的数据类型一开始定义成了map数组,实际是数组,而不是map
//var result map[string]interface{}
//err = json.Unmarshal(tmpByteValue, &result)
//if err != nil {
// logrus.Error(err.Error())
//}
nodeId1 := uuid.New()
modbusClient:=device.ModbusClient
//modbusWrite:=device.ModbusWrite
//modbusRead:=device.ModbusRead
//hTTPRequest:=device.HTTPRequest
//mqttBroker:=device.MqttBroker
//mqttOut:=device.MqttOut
// 创建二维数组
//使用 append() 函数向空的二维数组添加两行一维数组
//"wires": [
// ["node2"]
//]
wires := [][]string{}
row1 := []string{nodeId1}
wires = append(wires, row1)
//nodes := result["nodes"].([]interface{})
for _, node := range jsonObj {
logrus.Println("===node==",node)
//这里对象里面才是map
//m := node.(map[string]interface{})
m := node.(map[string]interface{})
m["id"]="XXX"
m["tcpHost"]=modbusClient.TcpHost
for k, v := range m {
switch vv := v.(type) {
case string:
fmt.Println(k, "是string类型", vv)
case int:
fmt.Println(k, "是int类型", vv)
default:
fmt.Println("xxx")
}
}
//if name, exists := m["type"]; exists {
// if strings.Contains(name.(string), "tab") {
// m["id"] = nodeId1
// }
//}
//if name, exists := m["type"]; exists {
// if strings.Contains(name.(string), "modbus-client") {
// fmt.Println(m["tcpHost"])
// }
//}
}
logrus.Info("=======",jsonObj)
// Convert golang object back to byte
byteValue, err := json.Marshal(jsonObj)
if err != nil {
logrus.Error(err.Error())
}
logrus.Info("=======",string(byteValue))
Write back to file
//err = ioutil.WriteFile(outFile, byteValue, 0644)
//return err
return byteValue
}