Вы должны указать условие, которое вы хотите выполнить, а также принять решение об использовании C или C ++, в противном случае ваш вопрос слишком общий.
Также ваш вопрос не выглядит как правильный JSON: что такое Rule1
? Это ключ?Тогда это должно быть что-то вроде {"Rule1" :{...}}
, а внутренняя структура должна быть такой же, например "ifstatement"
вместо "ifstatement1"
и "ifstatement2"
, "actionstatemen"
вместо "actionstatement1"
"actionstatement2"
Я будупредположим, что ваш JSON, который не является JOSN для того, как вы разместили, имеет форму:
[
{
"id" : "Rule1",
"ifstatement": {
"condition1": 0,
"condition2": "down"
},
"actionstatement": {
"val1": 235959,
"val2": "yes",
"val3": 5,
"val4": 0,
"val5": "increse",
"val6": 1
},
{
"id": "Rule2",
"ifstatement": {
"condition1": 2,
"condition2": "up",
"condition3": 10
},
"actionstatement": {
"val1": 1223,
"val2": "no",
"val3": 5
}
}
]
Существуют разные библиотеки, которые позволяют это в C ++.Одним из них является JSONcpp
(я скачал исходный код, но, возможно, если вы работаете в Unix / Linux, вы можете установить двоичную версию.
Код, который я использовал для его чтенияэто что-то вроде:
Json::Value root;
std::string dataFileName = "yourPath/filename.json"
if( access( dataFileName.c_str(), F_OK ) != -1 )
{
std::ifstream file(dataFileName);
file >> root;// file exists
for (Json::Value::ArrayIndex i = 0; i != root.size(); i++)
{
for (Json::Value::ArrayIndex j = 0; j != root[i]["ifstatement"].size(); j++)
{
(root[i]["ifstatement"][j] );
...
}
}
}
Таким образом, в основном root
представляет весь ваш файл, а тип Json::Value::ArrayIndex j
позволяет перебирать ваш JSON-файл, который, как я переписал, его самая внешняя структура - это массив.Затем вы можете получить доступ к полям как: root[0]
эквивалентно вашему исходному правилу RUle1, а затем указать ключ: например, root[0]["ifstatement"]
. Если вам нужно преобразовать значение в целое число из файла JSON, вам следует использовать метод asInt()
илиasFloat()
для float.
Поскольку ваш вопрос слишком общий, я не могу помочь вам в дальнейшем: (