2016-03-04 1 views
1

У меня есть строка Json, как показано ниже, и мне нужно проанализировать их с помощью библиотеки jsoncpp на C++; однако, даже если я пытаюсь проанализировать status_code, который является самым простым ключом, я получаю логический террор. Мой код для разбора json таков:jsoncpp Json :: LogicError, когда я пытаюсь разобрать объект

Json::Value root = js; 

const Json::Value status_code = root["status_code"]; 

где js - строка std ::. Я печатаю корень, и результаты кажутся нормальными, но вторая строка кода всегда дает ошибку. Кроме того, я попробовал метод Json :: Value :: get и ничего не изменил.

{ 
    "status_code": "OK", 
    "status_msg": "All images in request have completed successfully. ", 
    "meta": { 
    "tag": { 
     "timestamp": 1457008532.462851, 
     "model": "general-v1.3", 
     "config": "34fb1111b4d5f67cf1b8665ebc603704" 
    } 
    }, 
    "results": [ 
    { 
     "docid": 161641131401527616156105737996754786562, 
     "status_code": "OK", 
     "status_msg": "OK", 
     "local_id": "", 
     "result": { 
     "tag": { 
      "concept_ids": [ 
      "ai_786Zr311", 
      "ai_pPxqdnP5", 
      "ai_Pf2b7clG", 
      "ai_c9n7SB25", 
      "ai_WTrlNkqM", 
      "ai_ggQlMG6W", 
      "ai_62K34TR4", 
      "ai_hf5ZBGcK", 
      "ai_9c0Hmcx0", 
      "ai_6lhccv44", 
      "ai_pCnxWJZh", 
      "ai_bmls4LpL", 
      "ai_TkWkj1sX", 
      "ai_rsX6XWc2", 
      "ai_x3vjxJsW", 
      "ai_4Qjv5PTH", 
      "ai_lrTHSPdB", 
      "ai_bBXFkGB1", 
      "ai_xxnGcd42", 
      "ai_PpTcwbdQ" 
      ], 
      "classes": [ 
      "no person", 
      "room", 
      "indoors", 
      "furniture", 
      "vehicle", 
      "industry", 
      "technology", 
      "production", 
      "exhibition", 
      "business", 
      "contemporary", 
      "group", 
      "container", 
      "building", 
      "home", 
      "modern", 
      "action", 
      "auto racing", 
      "seat", 
      "computer" 
      ], 
      "probs": [ 
      0.9784166812896729, 
      0.9754077196121216, 
      0.974927544593811, 
      0.9747141003608704, 
      0.9636767506599426, 
      0.954016923904419, 
      0.9406172633171082, 
      0.9292353391647339, 
      0.9243901968002319, 
      0.911110520362854, 
      0.8961678147315979, 
      0.8841571807861328, 
      0.8797860145568848, 
      0.8792335987091064, 
      0.869953989982605, 
      0.8654355406761169, 
      0.8574825525283813, 
      0.8546661734580994, 
      0.8530611991882324, 
      0.8511127829551697 
      ] 
     } 
     }, 
     "docid_str": "799af313d0500ce2648b9a4e20c49902" 
    } 
    ] 
} 

ответ

1

Я решил свою проблему, используя Json :: Reader. Я отправляю код, чтобы помочь другим, кто столкнется с этой проблемой.

Я получаю «классы» тег с кодом ниже:

Json::Value root; 

Json::Reader reader; 

reader.parse(js,root); 

const Json::Value classes = root["results"][0]["result"]["tag"]["classes"]; 
Смежные вопросы