我有两个带有以下签名的func:
1) func printAWSDataToConsole(edgexcontext *appcontext.Context, params ...interface{}) (bool, interface{}) {
和
2) func (f Conversion) TransformToAWS()
其中
func NewConversion() Conversion {
return Conversion{}
}
首先TransformToAWS返回
true, string(msg)
通过执行简单的
,我能够在printAWSDataToConsole中打印msg的值 fmt.Println(params[0].(string))
现在,我将TransformToAWS更改为返回json:
data := YuccaDataStream {
Stream : "temperatura2",
Sensor : "ec6c613a-66b4-4584-fb37-5f7cac130f7d",
Values : []Value {
Value {
Time:formattedTime,
Components: Components{Alfanum :"15.55"},
}, }, }
dataAsBytes, err := json.Marshal(data)
return true, dataAsBytes
其中
type YuccaDataStream struct {
Stream string `json:"stream"`
Sensor string `json:"sensor"`
Values []Value `json:"values"`
}
type Value struct {
Time string `json:"time"`
Components `json:"components"`
}
type Components struct {
Alfanum string `json:"alfanum"`
}
我不知道如何在printAWSDataToConsole中解组json。
答案 0 :(得分:1)
要解组,请使用以下代码:
var dataOut YuccaDataStream
err = json.Unmarshal(dataAsBytes, &dataOut)
就是这样。就这么简单。
答案 1 :(得分:0)
问题是要了解如何从params ...接口获取数据。 答案是:
...
// decode encoded path to list of points LatLng
List<LatLng> decodedPoints = PolyUtil.decode(encodedPoints);
List<LatLng> segment = new ArrayList(2);
for (int k = 0; k < decodedPoints.size() - 1; k++) {
segment.clear();
segment.add(decodedPoints.get(k));
segment.add(decodedPoints.get(k+1));
if (PolyUtil.isLocationOnPath(currentLocation, segment, true, 100)) {
// your currentLocation is on the segment of step
}
}