我曾在 C++ 中工作过,但那是几年前,在过去 5 年左右的时间里,我几乎只在 Objective C 中工作过,也许我只是觉得这样做很舒服。
但是,我正在编写一个 C++ json-parser,它在概念上很困难,因为没有像 Objective C 中那样的自然映射。我并不是说它更好,只是说我还没有找到自然映射.
因此,在 Objective CI 中,通常会开始将 json 解析为 NSDictionary,因为它映射得非常好。NSDictionary 是键值对数据类型,其中键通常是字符串(但可以是任何类型),值通常是 NSObject(从概念上讲),并且在 Objc 中,所有内容都继承 NSObject,因此类型是一种“自动多态” “如果你愿意的话。(为任何可能确切知道如何帮助我但如果我不解释 Objc 则不明白我要求什么的 C++ 开发人员提供的解释)。
无论如何,这意味着如果我有一个示例 json-string:
{"key":1, "key2":3.14, "key3":"hello world", "key4":[1,2,3]}
它已经精确映射到一个 NSDictionary,其中第一个值是整数(或数字),第二个是浮点数(或数字),第三个是 NSString,第四个是 NSArray,它保存三个值,在我的示例中恰好是整数,但可以只要它是从 NSObject 派生的,就可以是任何东西。
在 C++ 中,这对我来说更难理解和找到一个好的映射或模型,我想我可以滚动我自己的多态类型来做同样的事情,然后我可以有一个抽象类型的映射并得到几乎相同行为。
但要么我认为我需要编写自己的容器(地图和矢量)或编写自己的“Json 类型”。然而,我有点害怕陷入 Objc 中正确的思维方式,因为它是一种非常不同的语言,并且建立在与 C++ 完全不同的设计理念之上。
也许有更好和更正确的方法在 C++ 中做这样的事情,我只是不知道。所以我的问题是如何在 C++ 中以一种好的方式处理可能具有不同类型的事物。