2013-10-28 28 views
1

我已將我的數據以json格式保存在MySQL數據庫中。我想用C++解碼它。我使用SimpleJSON對其進行編碼,但我無法提取它。我的數據庫格式是:在C++中解碼json

[[{"x":36},{"y":0},{"value":0.47873455286026}], 
[{"x":68},{"y":0},{"value":0.00944233685731888}], 
[{"x":35},{"y":0},{"value":0.00944233685731888}], 
[{"x":206},{"y":0},{"value":0.00944233685731888}]] 

保存在1列。我將該值作爲數據庫的字符串獲取。我怎樣才能解碼它?我用來編碼的代碼是:

JSONArray array; 
    for (int j = 0;j<bb.rows;j++){ 
     JSONArray v; 
     JSONObject x,y,value,result; 

     x[L"x"]=new JSONValue ((double) (bb.at<double>(j,0))); 
     y[L"y"]=new JSONValue ((double)(0)); 
     value[L"value"]=new JSONValue(bb.at<double>(j,1)); 

     v.push_back(new JSONValue(x)); 
     v.push_back(new JSONValue(y)); 
     v.push_back(new JSONValue(value)); 
     array.push_back(new JSONValue(v)); 
    } 

我跟着這個鏈接。 https://github.com/MJPA/SimpleJSON

+0

有什麼問題加載到字符串,然後'Parse',使用'Json :: Parse'方法? – ForEveR

+0

我用它,但不能。它可能是一個數組內的數組。 – user1583647

+0

@ user1583647你的問題究竟是什麼?例如,要獲得第一個值36,您應該能夠使用'JSON :: Parse(myJson) - > asArray()[0] - > asArray()[0] - > asObject() - > begin() - >二階> asNumber();'。當然,你應該檢查一路上的所有轉換。 – PeterT

回答

2
#include "JSON.h" 
#include "iostream" 

int main() { 

    char *json_string = "[[{\"x\":36},{\"y\":0},{\"value\":0.47873455286026}], \ 
     [{\"x\":68},{\"y\":0},{\"value\":0.00944233685731888}], \ 
     [{\"x\":35},{\"y\":0},{\"value\":0.00944233685731888}], \ 
     [{\"x\":206},{\"y\":0},{\"value\":0.00944233685731888}]]"; 

    JSONValue *data = JSON::Parse(json_string); 

    for(size_t i=0; i<data->CountChildren(); ++i) { 
     JSONValue *row = data->Child(i); 
     std::cout << "x = " << row->Child(0)->Child(L"x")->AsNumber() << std::endl; 
     std::cout << "y = " << row->Child(1)->Child(L"y")->AsNumber() << std::endl; 
     std::cout << "value = " << row->Child(2)->Child(L"value")->AsNumber() << std::endl; 
     std::cout << std::endl; 
    } 

    return 0; 
} 

下面是這個代碼在網上測試 - http://ideone.com/wBRZfI(見到底的代碼,因爲整個SimpleJSON源粘貼有)