Как добавить член объекта в массив? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть файл json вот так.

Используйте nlohmann.

{"Fans": [
        {
            "MemberID": "0",
            "Name": "Fan 0 ABC",
            "Reading": 30
        },
        {
            "MemberID": "1",
            "Name": "Fan 1 ABC",
            "Reading": 40,
            "Unit": "RPM" // add object
        }
]
}

Я хочу найти «Вентилятор 1», затем добавить новый объект.

Я могу найти индекс Фанов [].

Но я не знаю, как добавить объект.

nlohmann::json &tempArray = Resp->res.jsonValue[Fans];
for(auto &x : tempArray.items()) 
{
   auto &Value = x.value();
   auto iter = Value.find("Name");
   if(iter != Value.end())
   {
      std::string str = iter.value();
      if(str.find("Fan 1", 0) != std::string::npos)
      {
           // add object?                                  
      }
   }
}

1 Ответ

1 голос
/ 27 мая 2019

Мне пришлось реструктурировать ваш код для создания MCVE, но вы можете просто использовать operator[] для назначения новых полей для объекта:

void modifyJson(json & j) {
    json &tempArray = j["Fans"];
    for(auto &x : tempArray)
    {
        auto iter = x.find("Name");
        if(iter != x.end())
        {
            std::string str = iter.value();
            if(str.find("Fan 1", 0) != std::string::npos)
            {
                x["Unit"] = "RPM";
                return;
            }
        }
    }
}
...