使用json-cpp解析json对象时如何识别重复键?

时间:2015-01-08 12:48:46

标签: json jsoncpp

我正在尝试解析从文件中读取的json对象。 我想识别重复的密钥,因为json-cpp不喜欢它们(即使它们在json中不是非法的)。

我需要能够说:错误:你的json文件有重复的键,我们不喜欢它。

Json::Reader reader(Json::Features::strictMode());

在strictMode中使用reader并不起作用。

3 个答案:

答案 0 :(得分:1)

设置

rejectDupKeys

in

void Json::CharReaderBuilder::setDefaults   (   Json::Value *   settings    )

JsonCPP Doc

答案 1 :(得分:0)

没有开箱即用的方法,但您可以编程该功能。 由于JsonCPP使用地图存储对象键,因此您必须添加一些代码:

Value &Value::resolveReference(const char *key, bool isStatic)

首先,你必须确保你正在解析(而不是访问一些Json :: Value)。然后,您必须向此if添加一些内容(例如异常或标记):

if (it != value_.map_->end() && (*it).first == actualKey)
{
    // key is already present: if parsing, throw!
    return (*it).second;
}

答案 2 :(得分:0)

Open an issue。这可以很容易地添加。 (Sga的想法可能是最好的方法。)我们最近做了很多工作,以便在保持二进制兼容性的同时更容易添加功能。