gpt4 book ai didi

javascript - 解析消息并返回 json 的更清洁的解决方案

转载 作者:行者123 更新时间:2023-11-30 09:47:14 25 4
gpt4 key购买 nike

我正在编写一个函数来订阅通过蓝牙传输的数据并解析它,最后将特定信息返回到输出 json 中。

我的消息格式将是'Header','Id','Ggid','Ppayload','Ttimestamp','AsigA','BsigB'。在这种格式中,每个段之间没有空格,只有一个逗号。这种格式只需要 Id 和 Header。 header 是静态的,并且始终以“H”开头。其他信息将以大写字母开头,但“Id”除外。例如,Id 段可以是 12345678,但有效负载段将是 P12345678。目前,我有一个非常复杂的代码来解析此信息。

示例消息是一个字符串:H,00198601,GLOCATE,P762,T1.50,A64,B67

var len = Message.length;
app.outputTagJson.Tag = {};
if (len >= 2)
{
app.outputTagJson.Tag.tagID = Message[1];
app.outputTagJson.Tag.isLost = "False";
if (len >= 3)
{
app.outputTagJson.Tag.groupID = Message[2].slice(1,Message[2].length);
if (len >= 4)
{
app.outputTagJson.Tag.payload = Message[3].slice(1,Message[3].length);
if (len >= 5)
{
app.outputTagJson.Tag.timeStamp = Message[4].slice(1,Message[4].length);
if (len >= 6)
{
app.outputTagJson.Tag.sigStrenthA = Message[5].slice(1,Message[5].length);
if (len >= 7)
{
app.outputTagJson.Tag.sigStrenthB = Message[6].slice(1,Message[6].length);
}
}
}
}
}
}

我在想一个通用的正则表达式来在 javascript 中切割这种格式,但我并不熟悉它。那么有没有不使用正则表达式的更简洁的解决方案,或者如果我必须使用正则表达式,我该如何处理?

最佳答案

试试这个?

var input = 'H,00198601,GLOCATE,P762,T1.50,A64,B67';

var fieldMap = {
G: 'groupID',
P: 'payload',
T: 'timeStamp',
A: 'sigStrengthA', // NOTE: you misspelled "strength"
B: 'sigStrengthB',
};

var fields = input.split(',');
var tag = {};

tag.tagID = fields[1];

fields.slice(2).forEach(function (field) {
tag[fieldMap[field[0]]] = field.substring(1);
});

console.log(JSON.stringify(tag, null, 4));

// Output:
// {
// "tagID": "00198601",
// "groupID": "LOCATE",
// "payload": "762",
// "timeStamp": "1.50",
// "sigStrengthA": "64",
// "sigStrengthB": "67"
// }

编辑

另一个完全依赖于字段顺序的解决方案(现在我看到字段总是以相同的顺序排列):

var input = 'H,00198601,GLOCATE,P762,T1.50,A64,B67';

var fieldNames = [
'tagID',
'groupID',
'payload',
'timeStamp',
'sigStrengthA',
'sigStrengthB',
];

var tag = {};
var fields = input.split(',');
for (var i = 1; i < fields.length; i++) {
tag[fieldNames[i-1]] = fields[i].substring(i === 1 ? 0 : 1);
}

console.log(JSON.stringify(tag, null, 4));

// Output:
// {
// "tagID": "00198601",
// "groupID": "LOCATE",
// "payload": "762",
// "timeStamp": "1.50",
// "sigStrengthA": "64",
// "sigStrengthB": "67"
// }

关于javascript - 解析消息并返回 json 的更清洁的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38385651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com