我正在学习并尝试设计一个简单的应用程序,该应用程序从 The Thing Network 获取数据,但在尝试解码从 message.payload 中检索到的有效负载时遇到困难
func mqtt(_ mqtt: CocoaMQTT, didReceiveMessage message : CocoaMQTTMessage, id: UInt16)
有效负载 của tôi có dạng như sau:
didReceiveMessage: 0 CocoaMQTTMessage(topic: v3/nqh-demo@ttn/devices/eui-ac1f09fffe0b78e8/up, qos: qos0, payload: [123, 34, 101, 110, 100, 95, 100, 101, 118, 105, ...])
payload: [123, 34, 101, 110, 100, 95, 100, 101, 118, 105, 99, 101, 95, 105, 100, 115, 34, 58, 123, 34, 100, 101, 118, 105, 99, 101, 95, 105, 100, 34, 58, 34, 101, 117, 105, 45, 97, 99, 49, 102, 48, 57, 102, 102, 102, 101, 48, 98, 55, 56, 101, 56, 34, 44, 34, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 95, 105, 100, 115, 34, 58, 123, 34, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 95, 105, 100, 34, 58, 34, 110, 113, 104, 45, 100, 101, 109, 111, 34, 125, 44, 34, 100, 101, 118, 95, 101, 117, 105, 34, 58, 34, 65, 67, 49, 70, 48, 57, 70, 70, 70, 69, 48, 66, 55, 56, 69, 56, 34, 44, 34, 106, 111, 105, 110, 95, 101, 117, 105, 34, 58, 34, 48, 67, 56, 53, 56, 54, 54, 50, 70, 65, 52, 53, 65, 52, 53, 50, 34, 44, 34, 100, 101, 118, 95, 97, 100, 100, 114, 34, 58, 34, 50, 54, 48, 68, 49, 57, 55, 70, 34, 125, 44, 34, 99, 111, 114, 114, 101, 108, 97, 116, 105, 111, 110, 95, 105, 100, 115, 34, 58, 91, 34, 97, 115, 58, 117, 112, 58, 48, 49, 72, 57, 74, 70, 83, 89, 55, 69, 69, 90, 78, 90, 82, 74, 50, 66, 83, 67, 56, 83, 54, 49, 77, 81, 34, 44, 34, 103, 115, 58, 99, 111, 110, 110, 58, 48, 49, 72, 57, 70, 53, 75, 70, 49, 66, 65, 49, 51, 55, 74, 65, 75, 75, 75, 70, 86, 78, 86, 75, 56, 65, 34, 44, 34, 103, 115, 58, 117, 112, 58, 104, 111, 115, 116, 58, 48, 49, 72, 57, 70, 53, 75, 70, 57, 77, 65, 90, 65, 75, 90, 69, 67, 81, 49, 51, 90, 65, 82, 82, 90, 88, 34, 44, 34, 103, 115, 58, 117, 112, 108, 105, 110, 107, 58, 48, 49, 72, 57, 74, 70, 83, 89, 48, 68, 56, 57, 70, 83, 54, 51, 57, 65, 71, 55, 66, 69, 74, 72, 77, 87, 34, 44, 34, 110, 115, 58, 117, 112, 108, 105, 110, 107, 58, 48, 49, 72, 57, 74, 70, 83, 89, 48, 69, 56, 77, 90, 68, 89, 68, 72, 53, 53, 67, 83, 77, 78, 50, 89, 86, 34, 44, 34, 114, 112, 99, 58, 47, 116, 116, 110, 46, 108, 111, 114, 97, 119, 97, 110, 46, 118, 51, 46, 71, 115, 78, 115, 47, 72, 97, 110, 100, 108, 101, 85, 112, 108, 105, 110, 107, 58, 48, 49, 72, 57, 74, 70, 83, 89, 48, 69, 53, 68, 54, 90, 90, 54, 84, 66, 51, 88, 75, 84, 66, 83, 70, 83, 34, 44, 34, 114, 112, 99, 58, 47, 116, 116, 110, 46, 108, 111, 114, 97, 119, 97, 110, 46, 118, 51, 46, 78, 115, 65, 115, 47, 72, 97, 110, 100, 108, 101, 85, 112, 108, 105, 110, 107, 58, 48, 49, 72, 57, 74, 70, 83, 89, 55, 69, 78, 88, 57, 51, 89, 56, 75, 75, 54, 81, 81, 75, 55, 56, 56, 56, 34, 93, 44, 34, 114, 101, 99, 101, 105, 118, 101, 100, 95, 97, 116, 34, 58, 34, 50, 48, 50, 51, 45, 48, 57, 45, 48, 53, 84, 49, 48, 58, 53, 54, 58, 53, 53, 46, 48, 50, 50, 53, 52, 51, 50, 51, 51, 90, 34, 44, 34, 117, 112, 108, 105, 110, 107, 95, 109, 101, 115, 115, 97, 103, 101, 34, 58, 123, 34, 115, 101, 115, 115, 105, 111, 110, 95, 107, 101, 121, 95, 105, 100, 34, 58, 34, 65, 89, 112, 104, 66, 65, 78, 74, 55, 53, 115, 57, 120, 114, 105, 105, 111, 115, 74, 47, 86, 103, 61, 61, 34, 44, 34, 102, 95, 99, 110, 116, 34, 58, 53, 56, 50, 44, 34, 114, 120, 95, 109, 101, 116, 97, 100, 97, 116, 97, 34, 58, 91, 123, 34, 103, 97, 116, 101, 119, 97, 121, 95, 105, 100, 115, 34, 58, 123, 34, 103, 97, 116, 101, 119, 97, 121, 95, 105, 100, 34, 58, 34, 101, 117, 105, 45, 97, 99, 49, 102, 48, 57, 102, 102, 102, 101, 48, 99, 98, 48, 51, 49, 45, 110, 113, 104, 34, 44, 34, 101, 117, 105, 34, 58, 34, 65, 67, 49, 70, 48, 57, 70, 70, 70, 69, 48, 67, 66, 48, 51, 49, 34, 125, 44, 34, 116, 105, 109, 101, 115, 116, 97, 109, 112, 34, 58, 51, 57, 56, 56, 48, 49, 52, 56, 57, 52, 44, 34, 114, 115, 115, 105, 34, 58, 45, 55, 44, 34, 99, 104, 97, 110, 110, 101, 108, 95, 114, 115, 115, 105, 34, 58, 45, 55, 44, 34, 115, 110, 114, 34, 58, 49, 52, 46, 51, 44, 34, 102, 114, 101, 113, 117, 101, 110, 99, 121, 95, 111, 102, 102, 115, 101, 116, 34, 58, 34, 45, 49, 51, 51, 54, 57, 34, 44, 34, 108, 111, 99, 97, 116, 105, 111, 110, 34, 58, 123, 34, 108, 97, 116, 105, 116, 117, 100, 101, 34, 58, 50, 49, 46, 48, 48, 53, 50, 52, 48, 53, 56, 56, 49, 52, 55, 56, 50, 56, 44, 34, 108, 111, 110, 103, 105, 116, 117, 100, 101, 34, 58, 49, 48, 53, 46, 56, 49, 49, 48, 51, 49, 51, 51, 55, 54, 56, 57, 51, 54, 44, 34, 115, 111, 117, 114, 99, 101, 34, 58, 34, 83, 79, 85, 82, 67, 69, 95, 82, 69, 71, 73, 83, 84, 82, 89, 34, 125, 44, 34, 117, 112, 108, 105, 110, 107, 95, 116, 111, 107, 101, 110, 34, 58, 34, 67, 105, 89, 75, 74, 65, 111, 89, 90, 88, 86, 112, 76, 87, 70, 106, 77, 87, 89, 119, 79, 87, 90, 109, 90, 109, 85, 119, 89, 50, 73, 119, 77, 122, 69, 116, 98, 110, 70, 111, 69, 103, 105, 115, 72, 119, 110, 47, 47, 103, 121, 119, 77, 82, 67, 117, 106, 116, 72, 116, 68, 104, 111, 77, 67, 80, 97, 83, 51, 75, 99, 71, 69, 73, 51, 87, 110, 118, 119, 67, 73, 76, 67, 88, 50, 77, 71, 73, 115, 104, 89, 61, 34, 44, 34, 99, 104, 97, 110, 110, 101, 108, 95, 105, 110, 100, 101, 120, 34, 58, 49, 44, 34, 114, 101, 99, 101, 105, 118, 101, 100, 95, 97, 116, 34, 58, 34, 50, 48, 50, 51, 45, 48, 57, 45, 48, 53, 84, 49, 48, 58, 53, 54, 58, 53, 52, 46, 55, 57, 55, 52, 50, 48, 51, 48, 49, 90, 34, 125, 93, 44, 34, 115, 101, 116, 116, 105, 110, 103, 115, 34, 58, 123, 34, 100, 97, 116, 97, 95, 114, 97, 116, 101, 34, 58, 123, 34, 108, 111, 114, 97, 34, 58, 123, 34, 98, 97, 110, 100, 119, 105, 100, 116, 104, 34, 58, 49, 50, 53, 48, 48, 48, 44, 32, 34, 115, 112, 114, 101, 97, 100, 105, 110, 103, 95, 102, 97, 99, 116, 111, 114, 34, 58, 49, 48, 44, 32, 34, 99, 111, 100, 105, 110, 103, 95, 114, 97, 116, 101, 34, 58, 34, 52, 47, 53, 34, 125, 125, 44, 32, 34, 102, 114, 101, 113, 117, 101, 110, 99, 121, 34, 58, 34, 57, 50, 51, 52, 48, 48, 48, 48, 48, 34, 44, 32, 34, 116, 105, 109, 101, 115, 116, 97, 109, 112, 34, 58, 51, 57, 56, 56, 48, 49, 52, 56, 57, 52, 125, 44, 34, 114, 101, 99, 101, 105, 118, 101, 100, 95, 97, 116, 34, 58, 34, 50, 48, 50, 51, 45, 48, 57, 45, 48, 53, 84, 49, 48, 58, 53, 54, 58, 53, 52, 46, 55, 57, 56, 55, 54, 51, 49, 53, 51, 90, 34, 44, 34, 99, 111, 110, 115, 117, 109, 101, 100, 95, 97, 105, 114, 116, 105, 109, 101, 34, 58, 34, 48, 46, 50, 56, 56, 55, 54, 56, 115, 34, 44, 34, 108, 111, 99, 97, 116, 105, 111, 110, 115, 34, 58, 123, 34, 117, 115, 101, 114, 34, 58, 123, 34, 108, 97, 116, 105, 116, 117, 100, 101, 34, 58, 50, 49, 46, 48, 48, 51, 54, 49, 49, 57, 52, 50, 52, 53, 56, 50, 48, 55, 44, 34, 108, 111, 110, 103, 105, 116, 117, 100, 101, 34, 58, 49, 48, 53, 46, 56, 48, 56, 55, 50, 48, 50, 53, 56, 53, 56, 52, 48, 55, 44, 34, 115, 111, 117, 114, 99, 101, 34, 58, 34, 83, 79, 85, 82, 67, 69, 95, 82, 69, 71, 73, 83, 84, 82, 89, 34, 125, 125, 44, 34, 110, 101, 116, 119, 111, 114, 107, 95, 105, 100, 115, 34, 58, 123, 34, 110, 101, 116, 95, 105, 100, 34, 58, 34, 48, 48, 48, 48, 49, 51, 34, 44, 34, 116, 101, 110, 97, 110, 116, 95, 105, 100, 34, 58, 34, 116, 116, 110, 34, 44, 34, 99, 108, 117, 115, 116, 101, 114, 95, 105, 100, 34, 58, 34, 97, 117, 49, 34, 44, 34, 99, 108, 117, 115, 116, 101, 114, 95, 97, 100, 100, 114, 101, 115, 115, 34, 58, 34, 97, 117, 49, 46, 99, 108, 111, 117, 100, 46, 116, 104, 101, 116, 104, 105, 110, 103, 115, 46, 110, 101, 116, 119, 111, 114, 107, 34, 125, 125, 125]
我尝试按照以下方式解码,但不起作用:https://www.dropbox.com/sh/9fq1ydgs40d6hli/ACORN_0a1nS2fP8MtCa_wlsa?dl=0 你能告诉我如何解码它吗?或者我可以求一个可以在ios编程中使用的类似文档的链接吗?
您当前的有效负载是 JSON,您可以使用以下命令查看它:
print("Message stringified: \(message.string)")
由于它是 JSON,因此您可以使用 Coddle 结构和
JSONDecoder
或 JSONSerialization
。
let jsonData = Data(message.payload)
let jsonDict = try! JSONSerialization.jsonObject(with: jsonData)
print(jsonDict)
输出:
{
"correlation_ids" = (
"as:up:01H9JFSY7EEZNZRJ2BSC8S61MQ",
"gs:conn:01H9F5KF1BA137JAKKKFVNVK8A",
"gs:up:host:01H9F5KF9MAZAKZECQ13ZARRZX",
"gs:uplink:01H9JFSY0D89FS639AG7BEJHMW",
"ns:uplink:01H9JFSY0E8MZDYDH55CSMN2YV",
"rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01H9JFSY0E5D6ZZ6TB3XKTBSFS",
"rpc:/ttn.lorawan.v3.NsAs/HandleUplink:01H9JFSY7ENX93Y8KK6QQK7888"
);
"end_device_ids" = {
"application_ids" = {
"application_id" = "nqh-demo";
};
"dev_addr" = 260D197F;
"dev_eui" = AC1F09FFFE0B78E8;
"device_id" = "eui-ac1f09fffe0b78e8";
"join_eui" = 0C858662FA45A452;
};
"received_at" = "2023-09-05T10:56:55.022543233Z";
"uplink_message" = {
"consumed_airtime" = "0.288768s";
"f_cnt" = 582;
locations = {
user = {
latitude = "21.00361194245821";
longitude = "105.8087202585841";
source = "SOURCE_REGISTRY";
};
};
"network_ids" = {
"cluster_address" = "au1.cloud.thethings.network";
"cluster_id" = au1;
"net_id" = 000013;
"tenant_id" = ttn;
};
"received_at" = "2023-09-05T10:56:54.798763153Z";
"rx_metadata" = (
{
"channel_index" = 1;
"channel_rssi" = "-7";
"frequency_offset" = "-13369";
"gateway_ids" = {
eui = AC1F09FFFE0CB031;
"gateway_id" = "eui-ac1f09fffe0cb031-nqh";
};
location = {
latitude = "21.00524058814783";
longitude = "105.8110313376894";
source = "SOURCE_REGISTRY";
};
"received_at" = "2023-09-05T10:56:54.797420301Z";
rssi = "-7";
snr = "14.3";
timestamp = 3988014894;
"uplink_token" = "CiYKJAoYZXVpLWFjMWYwOWZmZmUwY2IwMzEtbnFoEgisHwn//gywMRCujtHtDhoMCPaS3KcGEI3WnvwCILCX2MGIshY=";
}
);
"session_key_id" = "AYphBANJ75s9xriiosJ/Vg==";
settings = {
"data_rate" = {
lora = {
bandwidth = 125000;
"coding_rate" = "4/5";
"spreading_factor" = 10;
};
};
frequency = 923400000;
timestamp = 3988014894;
};
};
}
现在由您来检索所需的值。