"Boost::property tree 를 이용한 json 스크립트 파싱"의 두 판 사이의 차이
jjuiddong
(→다른방식의 json 파싱) |
|||
33번째 줄: | 33번째 줄: | ||
if ("basic::s2c" == child.second.data()) | if ("basic::s2c" == child.second.data()) | ||
return true; | return true; | ||
+ | } | ||
+ | |||
+ | == property_tree find() 로 내부 데이타 얻는법 == | ||
+ | ptree props; | ||
+ | boost::property_tree::read_json(fileName.c_str(), props); | ||
+ | ptree &children = props.get_child("extract"); | ||
+ | BOOST_FOREACH(auto &vt, children) | ||
+ | { | ||
+ | ptree::assoc_iterator fit = vt.second.find("field"); | ||
+ | if (vt.second.not_found() != fit) | ||
+ | { | ||
+ | ptree &child_field = vt.second.get_child("field"); | ||
+ | BOOST_FOREACH(auto &v, child_field) | ||
+ | { | ||
+ | [[사용자:Jjuiddong|Jjuiddong]] ([[사용자토론:Jjuiddong|토론]]) | ||
+ | } | ||
+ | } | ||
} | } |
2013년 5월 11일 (토) 14:39 판
여러개의 속성을 가진 child 정보를 가져오는 방법
"property" : [ { "symbolname" : "CLobbyServer#1" }, { "symbolname" : "CLobbyServer#1" } ]
boost::property_tree 를 이용한 json 스크립트 파싱
boost::property_tree::read_json("filename", props); ptree &children = props.get_child("property"); BOOST_FOREACH(ptree::value_type &vt, children) { const string name = vt.second.get<string>("symbolname"); ... }
다른방식의 json 파싱
json 은 key, value 값으로 구성된 스크립트지만, 다음처럼 value값이 없이도 사용할 수 있다.
"collapse" : [ "basic::s2c", "login::s2c" ]
이 스크립트의 정보를 가져오는 방법은 다음과 같다. (이 예제의 특징은 key value 만 있고, data value는 없다는 점이다.)
ptree &collapse = g_Props.get_child("collapse"); BOOST_FOREACH(auto &child, collapse) { if ("basic::s2c" == child.second.data()) return true; }
property_tree find() 로 내부 데이타 얻는법
ptree props; boost::property_tree::read_json(fileName.c_str(), props); ptree &children = props.get_child("extract"); BOOST_FOREACH(auto &vt, children) { ptree::assoc_iterator fit = vt.second.find("field"); if (vt.second.not_found() != fit) { ptree &child_field = vt.second.get_child("field"); BOOST_FOREACH(auto &v, child_field) { Jjuiddong (토론) } } }