1 /* 2 * Copyright 2009-2017 Alibaba Cloud All rights reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <alibabacloud/ocr/model/RecognizeIdentityCardResult.h> 18 #include <json/json.h> 19 20 using namespace AlibabaCloud::Ocr; 21 using namespace AlibabaCloud::Ocr::Model; 22 RecognizeIdentityCardResult()23RecognizeIdentityCardResult::RecognizeIdentityCardResult() : 24 ServiceResult() 25 {} 26 RecognizeIdentityCardResult(const std::string & payload)27RecognizeIdentityCardResult::RecognizeIdentityCardResult(const std::string &payload) : 28 ServiceResult() 29 { 30 parse(payload); 31 } 32 ~RecognizeIdentityCardResult()33RecognizeIdentityCardResult::~RecognizeIdentityCardResult() 34 {} 35 parse(const std::string & payload)36void RecognizeIdentityCardResult::parse(const std::string &payload) 37 { 38 Json::Reader reader; 39 Json::Value value; 40 reader.parse(payload, value); 41 setRequestId(value["RequestId"].asString()); 42 auto dataNode = value["Data"]; 43 auto frontResultNode = dataNode["FrontResult"]; 44 if(!frontResultNode["Address"].isNull()) 45 data_.frontResult.address = frontResultNode["Address"].asString(); 46 if(!frontResultNode["Name"].isNull()) 47 data_.frontResult.name = frontResultNode["Name"].asString(); 48 if(!frontResultNode["Nationality"].isNull()) 49 data_.frontResult.nationality = frontResultNode["Nationality"].asString(); 50 if(!frontResultNode["IDNumber"].isNull()) 51 data_.frontResult.iDNumber = frontResultNode["IDNumber"].asString(); 52 if(!frontResultNode["Gender"].isNull()) 53 data_.frontResult.gender = frontResultNode["Gender"].asString(); 54 if(!frontResultNode["BirthDate"].isNull()) 55 data_.frontResult.birthDate = frontResultNode["BirthDate"].asString(); 56 auto allCardAreasNode = frontResultNode["CardAreas"]; 57 for (auto frontResultNodeCardAreasCardArea : allCardAreasNode) 58 { 59 Data::FrontResult::CardArea cardAreaObject; 60 if(!frontResultNodeCardAreasCardArea["X"].isNull()) 61 cardAreaObject.x = std::stof(frontResultNodeCardAreasCardArea["X"].asString()); 62 if(!frontResultNodeCardAreasCardArea["Y"].isNull()) 63 cardAreaObject.y = std::stof(frontResultNodeCardAreasCardArea["Y"].asString()); 64 data_.frontResult.cardAreas.push_back(cardAreaObject); 65 } 66 auto allFaceRectVerticesNode = frontResultNode["FaceRectVertices"]; 67 for (auto frontResultNodeFaceRectVerticesFaceRectVertice : allFaceRectVerticesNode) 68 { 69 Data::FrontResult::FaceRectVertice faceRectVerticeObject; 70 if(!frontResultNodeFaceRectVerticesFaceRectVertice["X"].isNull()) 71 faceRectVerticeObject.x = std::stof(frontResultNodeFaceRectVerticesFaceRectVertice["X"].asString()); 72 if(!frontResultNodeFaceRectVerticesFaceRectVertice["Y"].isNull()) 73 faceRectVerticeObject.y = std::stof(frontResultNodeFaceRectVerticesFaceRectVertice["Y"].asString()); 74 data_.frontResult.faceRectVertices.push_back(faceRectVerticeObject); 75 } 76 auto faceRectangleNode = frontResultNode["FaceRectangle"]; 77 if(!faceRectangleNode["Angle"].isNull()) 78 data_.frontResult.faceRectangle.angle = std::stof(faceRectangleNode["Angle"].asString()); 79 auto centerNode = faceRectangleNode["Center"]; 80 if(!centerNode["X"].isNull()) 81 data_.frontResult.faceRectangle.center.x = std::stof(centerNode["X"].asString()); 82 if(!centerNode["Y"].isNull()) 83 data_.frontResult.faceRectangle.center.y = std::stof(centerNode["Y"].asString()); 84 auto sizeNode = faceRectangleNode["Size"]; 85 if(!sizeNode["Height"].isNull()) 86 data_.frontResult.faceRectangle.size.height = std::stof(sizeNode["Height"].asString()); 87 if(!sizeNode["Width"].isNull()) 88 data_.frontResult.faceRectangle.size.width = std::stof(sizeNode["Width"].asString()); 89 auto backResultNode = dataNode["BackResult"]; 90 if(!backResultNode["StartDate"].isNull()) 91 data_.backResult.startDate = backResultNode["StartDate"].asString(); 92 if(!backResultNode["EndDate"].isNull()) 93 data_.backResult.endDate = backResultNode["EndDate"].asString(); 94 if(!backResultNode["Issue"].isNull()) 95 data_.backResult.issue = backResultNode["Issue"].asString(); 96 97 } 98 getData() const99RecognizeIdentityCardResult::Data RecognizeIdentityCardResult::getData()const 100 { 101 return data_; 102 } 103 104