fix(parsers.xpath): Fix panic for JSON name expansion (#12724)
This commit is contained in:
parent
4cd0a647c0
commit
245705cf24
|
|
@ -44,7 +44,12 @@ func (d *jsonDocument) GetNodePath(node, relativeTo dataNode, sep string) string
|
||||||
// Climb up the tree and collect the node names
|
// Climb up the tree and collect the node names
|
||||||
n := nativeNode.Parent
|
n := nativeNode.Parent
|
||||||
for n != nil && n != nativeRelativeTo {
|
for n != nil && n != nativeRelativeTo {
|
||||||
switch reflect.TypeOf(n.Parent.Value()).Kind() {
|
kind := reflect.Invalid
|
||||||
|
if n.Parent != nil && n.Parent.Value() != nil {
|
||||||
|
kind = reflect.TypeOf(n.Parent.Value()).Kind()
|
||||||
|
}
|
||||||
|
|
||||||
|
switch kind {
|
||||||
case reflect.Slice, reflect.Array:
|
case reflect.Slice, reflect.Array:
|
||||||
// Determine the index for array elements
|
// Determine the index for array elements
|
||||||
names = append(names, d.index(n))
|
names = append(names, d.index(n))
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
foo adr=true,applicationID="1",applicationName="Test",data="AGhCAGcA0g==",devEUI="27c0817d2aba3052",deviceName="TcsSensorNode",deviceProfileID="100ca98d-e075-4b1b-8cd3-41edbab355f5",deviceProfileName="TcsSensor",fCnt=71,fPort=2,object_humiditySensor_0=33,object_humiditySensor_1=25.5,object_temperatureSensor_0=21,object_temperatureSensor_1=19.3,rxInfo_0_gatewayID="b827ebfffeaa4582",rxInfo_0_loRaSNR=7.5,rxInfo_0_name="local",rxInfo_0_rssi=-60,rxInfo_0_uplinkID="659cbfab-3216-42fd-9f71-f2c470b7f9da",rxInfo_1_gatewayID="ca925641ce08b33e",rxInfo_1_loRaSNR=4.2,rxInfo_1_name="local",rxInfo_1_rssi=-98,rxInfo_1_uplinkID="15ca3b44-17a0-4662-82c9-aa23b40e16eb",txInfo_dr=5,txInfo_frequency=868500000,timestamp=1677099936000000000 1677099936000000000
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
[[inputs.file]]
|
||||||
|
files = ["./testcases/json_array_expand/test.json"]
|
||||||
|
data_format = "xpath_json"
|
||||||
|
|
||||||
|
xpath_native_types = true
|
||||||
|
|
||||||
|
[[inputs.file.xpath]]
|
||||||
|
field_name_expansion = true
|
||||||
|
metric_name = "'foo'"
|
||||||
|
field_selection = "descendant::*"
|
||||||
|
timestamp = "//timestamp"
|
||||||
|
timestamp_format = "unix_ns"
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"applicationID":"1",
|
||||||
|
"applicationName":"Test",
|
||||||
|
"deviceName":"TcsSensorNode",
|
||||||
|
"deviceProfileName":"TcsSensor",
|
||||||
|
"deviceProfileID":"100ca98d-e075-4b1b-8cd3-41edbab355f5",
|
||||||
|
"devEUI":"27c0817d2aba3052",
|
||||||
|
"timestamp": 1677099936000000000,
|
||||||
|
"rxInfo":[
|
||||||
|
{
|
||||||
|
"gatewayID":"b827ebfffeaa4582",
|
||||||
|
"uplinkID":"659cbfab-3216-42fd-9f71-f2c470b7f9da",
|
||||||
|
"name":"local",
|
||||||
|
"rssi":-60,
|
||||||
|
"loRaSNR":7.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gatewayID":"ca925641ce08b33e",
|
||||||
|
"uplinkID":"15ca3b44-17a0-4662-82c9-aa23b40e16eb",
|
||||||
|
"name":"local",
|
||||||
|
"rssi":-98,
|
||||||
|
"loRaSNR":4.2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"txInfo":{
|
||||||
|
"frequency":868500000,
|
||||||
|
"dr":5
|
||||||
|
},
|
||||||
|
"adr":true,
|
||||||
|
"fCnt":71,
|
||||||
|
"fPort":2,
|
||||||
|
"data":"AGhCAGcA0g==",
|
||||||
|
"object":{
|
||||||
|
"humiditySensor":{
|
||||||
|
"0":33,
|
||||||
|
"1":25.5
|
||||||
|
},
|
||||||
|
"temperatureSensor":{
|
||||||
|
"0":21,
|
||||||
|
"1":19.3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue