COOPY » Guide
version 0.6.5
|
00001 #include <coopy/JsonProperty.h> 00002 #include <coopy/Dbg.h> 00003 00004 #include <fstream> 00005 00006 using namespace std; 00007 using namespace coopy::store; 00008 00009 bool JsonProperty::add(Property& prop, const char *fname) { 00010 ifstream in(fname); 00011 Json::Value root; 00012 Json::Reader reader; 00013 if (!reader.parse(in,root,false)) { 00014 fprintf(stderr,"Failed to parse %s\n", fname); 00015 return false; 00016 } 00017 return add(prop,root); 00018 } 00019 00020 bool JsonProperty::add(Property& prop, Json::Value& root) { 00021 for (Json::Value::iterator it=root.begin(); it!=root.end(); it++) { 00022 if ((*it).isString()) { 00023 dbg_printf("Got %s -> %s\n", it.memberName(), 00024 (*it).asCString()); 00025 prop.put(it.memberName(),(*it).asCString()); 00026 } else if ((*it).isInt()) { 00027 dbg_printf("Got %s -> %d\n", it.memberName(), 00028 (*it).asInt()); 00029 prop.put(it.memberName(),(*it).asInt()); 00030 } else if ((*it).isBool()) { 00031 dbg_printf("Got %s -> %d\n", it.memberName(), 00032 (*it).asBool()?1:0); 00033 prop.put(it.memberName(),(*it).asBool()?1:0); 00034 } else if ((*it).isObject()) { 00035 Property& sub = prop.nest(it.memberName()); 00036 if (!JsonProperty::add(sub,*it)) { 00037 fprintf(stderr, "JSON: nesting failed\n"); 00038 return false; 00039 } 00040 } else { 00041 fprintf(stderr, "JSON: unsupported type\n"); 00042 return false; 00043 } 00044 } 00045 return true; 00046 } 00047 00048