COOPY » Guide  version 0.6.5
/home/paulfitz/cvs/coopy_scm/coopy/src/libcoopy_full/JsonProperty.cpp
Go to the documentation of this file.
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 
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines