如何解组此JSON

时间:2019-12-03 09:48:32

标签: json go

我有两个带有以下签名的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。

2 个答案:

答案 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
     }
}