我一直在试图将这个数据看成一段时间,也许我只是盯着太久了?
无论如何,现在的问题是找到一个很好的方式来表示JSON,并且在您读取之前,请注意,我对图书馆不感兴趣,所以我想在原始的C或C(C 11是不错的),没有提升,没有libjson我知道他们,由于这个问题的范围之外的原因我不能(/ wont)添加依赖关系.
现在已经清理了,让我告诉你一些关于这个问题,我已经尝试了这么远.
问题是找到一个很好的方式来表示JSON在C中,这是一个有点有问题的原因是JSON是超级松散的类型,而C是非常困难的类型.考虑JSON一秒钟,什么是JSON真的能够类似的?
>号码(例如42或3.1415)
>字符串(例如“我的字符串”)
> Array(例如[]或[1,3.1415,“我的字符串”))
>对象(例如{}或{42,3.1415,“我的字符串”,[],[1,3.1415,“我的字符串”}}
那么这意味着有两个“raw”类型,Number和String以及两个容器类型Array和Object.原始类型是相当简单的,而容器类型在C/C++中变得棘手,因为它们可能并且可能包含不同类型的元素,因此,任何内置的语言类型都不够,数组不能保持不同类型的元素.这也适用于STL类型(列表,向量,数组等),(除非它们具有多态等式).
所以JSON中的任何容器都可以容纳任何类型的json类型,这几乎都是它的一部分.
我原型,或尝试,为什么它不工作
我的第一个天真的想法是使用模板,所以我设置一个json对象或json节点类型,然后使用模板来决定它的内容,因此它将具有如下结构:
template
class JSONNode {
const char *key;
T value;
}
虽然这似乎是有希望的,但是当开始使用它时,我意识到当我尝试