go json解析======

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值