public override string ProcessEventData(TheThing thing, object evnt, DateTimeOffset defaultTimestamp) { string error = null; string json = DecodeEventAsString(evnt); if (json == null) { error = "Invalid payload"; } else { MeasurementPayload payload = null; try { payload = TheCommonUtils.DeserializeJSONStringToObject<MeasurementPayload>(json); if (payload == null) { error = "No data in payload"; } else { // TODO Implement deserializer (not customer requirement at this point) } } catch (Exception e) { error = e.ToString(); } } return error; }
string SerializeJSonArray(TheThingStore thingEvent, IEnumerable<Measurement> measurements) { if (!(measurements is List<Measurement>)) { measurements = new List<Measurement>(measurements); } var payload = new MeasurementPayload(); object deviceId; if (thingEvent.PB.TryGetValue("deviceID", out deviceId)) { payload.device.deviceID = TheCommonUtils.CStr(deviceId); } else { payload.device.deviceID = TheCommonUtils.cdeGuidToString(thingEvent.cdeMID); } payload.measurements.AddRange(measurements); string eventPayloadJson = TheCommonUtils.SerializeObjectToJSONString(payload); //eventPayloadJson = eventPayloadJson.Replace("\"contentspec\"", "\"content-spec\""); // Hack to avoid newtonsoft dependency for now: attribute ignored by cdeEngine internal serializer return eventPayloadJson; }