我想解析大约5-10种不同的消息类型,这些消息类型共享一种通用格式(例如JSON),但每种消息类型都有需要验证的特定字段。每条消息最终都应解析为一个自定义类/结构,其类型不需要任何类型的转换(例如,字段是int而不是变体/元组)。我看到了解决问题的两种方法:
为处理消息格式验证的每个特定消息编写语法(在此示例中为JSON样板)并验证字段的内容,返回真正的自定义结构
编写一个只验证结构(只是JSON规则)的语法,并返回一个更通用的对象(包含变体/元组的字段等),并在更高级别验证/转换为自定义结构(铸造和检查各种变量字段)
我认为这些是每个人的利弊:
1的优点:
1的缺点:
2的优点:
2的缺点:
哪种方法更可取?有没有第三种方法可以使用一种语法解析成多种类型?
这里是一些示例消息以及它们最终应该驻留在的类:
{"messageType": "messageTypeA", "numberParam": 1}
{"messageType": "messageTypeB", "stringParam": "Test"}
class MessageTypeA
{
public:
double numberParam;
};
class MessageTypeB
{
public:
std::string stringParam;
};
答案 0 :(得分:0)
我认为这个问题与最近的答案非常接近,我的确做到了这一点:我回答了两个答案:
我的投票是第一个选项,因为
即使关联问题中的OP似乎后来也需要我的第一个答案已经提供的灵活性:
哦,好吧。我很惊讶您之后接受了这个答案,因为其他答案完全相同,除非它接受并忽略"其他" JSON内容。您是否错过了定义
extract_from
的更新?它使用完全相同的数据结构 - 您在问题中建议的数据结构。 – sehe Jan 4 at 16:41