2016-03-04 332 views
1

我有一個Json字符串,如下所示,我需要用C++的jsoncpp庫解析它們;然而,即使我試圖解析status_code這是最簡單的鍵,我得到邏輯錯誤。我的代碼解析json是這樣的:jsoncpp Json :: LogicError,當我嘗試解析一個對象

Json::Value root = js; 

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

其中js是一個std :: string。我打印根,結果看起來很正常,但第二行代碼總是給出錯誤。另外,我嘗試了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"];