我想解析大约5-10种不同的消息类型,它们共享一种通用格式(例如JSON),但每种类型都有需要验证的特定字段。每条消息最终都应该被解析成一个定制的类/结构,其类型不需要任何类型的转换(例如,一个字段是int而不是variant/tuple)。我认为解决这个问题有两种方法:
>
为每个特定消息编写语法,处理消息格式(本例中为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;
};
我认为这个问题非常接近最近的一个答案,我正是这样做的:我用两个答案回答:
我的投票是第一个选项,因为
即使是链接问题中的OP后来似乎也需要我的第一个答案已经提供的灵活性:
哦,好吧。我很惊讶你当时接受了这个答案,因为另一个答案完全相同,除了它确实接受并忽略“其他”JSON内容。您是否错过了定义extract_from
的更新?它使用完全相同的数据结构 - 您在问题中建议的数据结构。– sehe Jan 4 at 16:41
问题内容: 如何从AsyncTask中获取数据?我的MainActivity正在调用触发AsyncTask的DataCall.getJSON函数,但是我不确定如何将数据返回到原始Activity。 调用DataCall的MainActivity应该返回一个字符串并将其保存在 数据通话: 问题答案: 对我来说,关键是创建一个名为URLWithParams的类或其他类,因为AsyncTask将只允许发
如标题所述,我正在尝试从int类型的方法()返回多个整数。该方法旨在接受整数数组并确定模式。另一个问题是索引中的每个值的范围为1-3。我无法创建对象、其他方法来处理部分解决方案或导入任何帮助我的东西。 我遇到的问题是如果数组中有多个模式 即 如您所见,在本例中有两种模式,分别是2和3,我不知道如何从一个方法返回多个整数。 这是我教授的指示“ “编写方法int mode(int[]a)。此函数采用一
问题内容: 我想知道以下内容: 如何从数据库中的多个表中获取数据? 有哪些类型的方法可以做到这一点? 什么是联接和工会,它们之间有何不同? 什么时候应该使用每个与其他比较? 我打算在我的应用程序(例如,PHP)中使用此功能,但是不想对数据库运行多个查询,我需要在单个查询中从多个表中获取数据的哪些选项? 注意:我正在写这篇文章是因为我希望能够链接到有关我在PHP队列中不断遇到的众多问题的书面指南,因
为了理解TypeScript的精神,我在我的组件和服务中编写了全类型签名,这扩展到了angular2表单的自定义验证函数。 我知道我可以重载函数签名,但这需要每个返回类型的参数不同,因为将每个签名编译为单独的函数: 我还知道我可以返回单个类型(如Promise),它本身可以是多个子类型: 但是,在angular2自定义表单验证器的上下文中,单个签名(一个类型为的参数)可以返回两种不同的类型:带有表
演示: https://tsplay.dev/NB6axN 代码: 结果: 传入 '/posts' 拿到 Promise<string[]> 传入 '/test' 拿到 Promise<number[]> 前置条件: 尽可能不要强行断言
问题内容: 如何快速从函数返回3个相同类型(Int)的单独数据值? 我试图返回一天中的时间,我需要将小时,分钟和秒作为单独的整数返回,但是所有这些都来自同一个函数,这可能吗? 我想我只是不了解返回多个值的语法。这是我正在使用的代码,我在last(return)行上遇到了麻烦。 任何帮助将不胜感激! 问题答案: 返回一个元组: 然后将其调用为: 要么: