c ++ nlohmann json - 如何测试嵌套对象是存在的还是空的

时间:2018-04-16 06:33:15

标签: c++ nested nlohmann-json

我有一个像这样的嵌套Json:

build site:
  image: node:6
  stage: build
  script:
    - npm install --progress=false
    - npm run build
  artifacts:
    expire_in: 1 week
    paths:
      - dist

deploy:
  image: alpine
  stage: deploy
  script:
    - apk add --no-cache rsync openssh
    - mkdir -p ~/.ssh
    - echo "$SSH_PRIVATE_KEY" >> ~/.ssh/id_dsa
    - chmod 600 ~/.ssh/id_dsa
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - rsync -rav --delete dist/ user@server.com

现在我想测试是否存在元素“rH”。例如,如果我只在Data Objekt中有一个值“Temp”,我该如何测试哪些值存在?这可能没有异常处理吗?

   string strJson = "{
  "Header":

    {"Version":"V0.00.01","ID":"1000","Name":"SetEnvValues"}


  ,
  "Data":

    {"Temp":0.00,"rH":0.00,"CO2":0.00,"O2":0.00 }



}";

我尝试使用count,但似乎这对嵌套对象不起作用:

{
"Header":

{"Version":"V0.00.01","ID":"1000","Name":"SetEnvValues"}


,
"Data":

{"Temp":0.00 }



}

这总是返回一个,我认为因为它只测试“数据”对象,而不是更深层次的嵌套对象。

1 个答案:

答案 0 :(得分:2)

可以使用jsonReceivedEnvValues["Data"].count("Bla")完成。确保您不会无意中创建您正在寻找的对象,例如:jsonReceivedEnvValues["Data"]["Bla"].is_null(); [“Data”]中创建一个对象 [“Bla”]