|
SNAP Library, User Reference
2012-10-15 15:06:59
SNAP, a general purpose network analysis and graph mining library
|
Go to the source code of this file.
Enumerations | |
| enum | TJsonValType { jvtUndef, jvtNull, jvtBool, jvtNum, jvtStr, jvtArr, jvtObj } |
Functions | |
| UndefCopyAssign (TJsonVal) | |
| TJsonVal () | |
| static PJsonVal | New () |
| TJsonVal (TSIn &SIn) | |
| static PJsonVal | Load (TSIn &SIn) |
| void | Save (TSOut &SOut) const |
| void | PutNull () |
| void | PutBool (const bool &_Bool) |
| void | PutNum (const double &_Num) |
| void | PutStr (const TStr &_Str) |
| void | PutArr () |
| void | AddToArr (const PJsonVal &Val) |
| void | PutObj () |
| void | AddToObj (const TStr &KeyNm, const PJsonVal &Val) |
| void | AddToObj (const TStr &KeyNm, const int &Val) |
| void | AddToObj (const TStr &KeyNm, const double &Val) |
| void | AddToObj (const TStr &KeyNm, const TStr &Val) |
| void | AddToObj (const TStr &KeyNm, const char *Val) |
| void | AddToObj (const TStr &KeyNm, const bool &Val) |
| void | AddToObj (const TStr &KeyNm, const TJsonValV &ValV) |
| static PJsonVal | NewNull () |
| static PJsonVal | NewBool (const bool &Bool) |
| static PJsonVal | NewNum (const double &Num) |
| static PJsonVal | NewStr (const TStr &Str) |
| static PJsonVal | NewArr () |
| static PJsonVal | NewArr (const TJsonValV &ValV) |
| static PJsonVal | NewArr (const TStrV &StrV) |
| static PJsonVal | NewObj () |
| static PJsonVal | NewObj (const TStr &KeyNm, const PJsonVal &ObjVal) |
| static PJsonVal | NewObj (const TStr &KeyNm, const int &ObjVal) |
| static PJsonVal | NewObj (const TStr &KeyNm, const double &ObjVal) |
| static PJsonVal | NewObj (const TStr &KeyNm, const TStr &ObjVal) |
| static PJsonVal | NewObj (const TStr &KeyNm, const bool &ObjVal) |
| TJsonValType | GetJsonValType () const |
| bool | IsNull () const |
| bool | IsBool () const |
| bool | IsNum () const |
| bool | IsStr () const |
| bool | IsArr () const |
| bool | IsObj () const |
| bool | GetBool () const |
| double | GetNum () const |
| TStr | GetStr () const |
| int | GetArrVals () const |
| PJsonVal | GetArrVal (const int &ValN) const |
| int | GetObjKeys () const |
| void | GetObjKeyVal (const int &KeyValN, TStr &Key, PJsonVal &Val) const |
| bool | IsObjKey (const TStr &Key) const |
| bool | IsObjKey (const char *Key) const |
| PJsonVal | GetObjKey (const TStr &Key) const |
| PJsonVal | GetObjKey (const char *Key) const |
| bool | GetObjBool (const TStr &Key) const |
| bool | GetObjBool (const char *Key) const |
| double | GetObjNum (const TStr &Key) const |
| double | GetObjNum (const char *Key) const |
| TStr | GetObjStr (const TStr &Key) const |
| TStr | GetObjStr (const char *Key) const |
| bool | GetObjBool (const TStr &Key, const bool &DefBool) const |
| bool | GetObjBool (const char *Key, const bool &DefBool) const |
| double | GetObjNum (const TStr &Key, const double &DefNum) const |
| double | GetObjNum (const char *Key, const double &DefNum) const |
| TStr | GetObjStr (const TStr &Key, const TStr &DefStr) const |
| TStr | GetObjStr (const char *Key, const TStr &DefStr) const |
| static PJsonVal | GetValFromLx (TILx &Lx) |
| static PJsonVal | GetValFromStr (const TStr &JsonStr) |
| static void | AddEscapeChAFromStr (const TStr &Str, TChA &ChA) |
| static TStr | AddEscapeStrFromStr (const TStr &Str) |
| static void | AddQChAFromStr (const TStr &Str, TChA &ChA) |
| static void | GetChAFromVal (const PJsonVal &Val, TChA &ChA) |
| static TStr | GetStrFromVal (const PJsonVal &Val) |
Variables | |
| ClassTPV(TJsonVal, PJsonVal, TJsonValV) private TBool | Bool |
| TFlt | Num |
| TStr | Str |
| TJsonValV | ValV |
| THash< TStr, PJsonVal > | KeyValH |
| enum TJsonValType |
| void TJsonVal::AddEscapeChAFromStr | ( | const TStr & | Str, |
| TChA & | ChA | ||
| ) | [static] |
Definition at line 122 of file json.cpp.
{
if (TUnicodeDef::IsDef()) {
// parse the UTF8 string (old: TUStr InUStr(InStr);)
TIntV UStr; TUnicodeDef::GetDef()->DecodeUtf8(Str, UStr);
// escape the string
for (int ChN = 0; ChN < UStr.Len(); ChN++) {
const int UCh = UStr[ChN];
if (UCh < 0x80) {
// 7-bit ascii
const char Ch = (char)UCh;
switch (Ch) {
case '"' : ChA.AddCh('\\'); ChA.AddCh('"'); break;
case '\\' : ChA.AddCh('\\'); ChA.AddCh('\\'); break;
case '/' : ChA.AddCh('\\'); ChA.AddCh('/'); break;
case '\b' : ChA.AddCh('\\'); ChA.AddCh('b'); break;
case '\f' : ChA.AddCh('\\'); ChA.AddCh('f'); break;
case '\n' : ChA.AddCh('\\'); ChA.AddCh('n'); break;
case '\r' : ChA.AddCh('\\'); ChA.AddCh('r'); break;
case '\t' : ChA.AddCh('\\'); ChA.AddCh('t'); break;
default :
ChA.AddCh(Ch);
}
} else {
// escape
ChA += "\\u";
ChA += TStr::Fmt("%04x", UCh);
}
}
} else {
// escape the string
for (int ChN = 0; ChN < Str.Len(); ChN++) {
const char Ch = Str[ChN];
if ((Ch & 0x80) == 0) {
// 7-bit ascii
switch (Ch) {
case '"' : ChA.AddCh('\\'); ChA.AddCh('"'); break;
case '\\' : ChA.AddCh('\\'); ChA.AddCh('\\'); break;
case '/' : ChA.AddCh('\\'); ChA.AddCh('/'); break;
case '\b' : ChA.AddCh('\\'); ChA.AddCh('b'); break;
case '\f' : ChA.AddCh('\\'); ChA.AddCh('f'); break;
case '\n' : ChA.AddCh('\\'); ChA.AddCh('n'); break;
case '\r' : ChA.AddCh('\\'); ChA.AddCh('r'); break;
case '\t' : ChA.AddCh('\\'); ChA.AddCh('t'); break;
default : ChA.AddCh(Ch);
}
} else {
// escape
ChA += "\\u";
ChA += TStr::Fmt("%02x", (int)Ch);
}
}
}
}
| static TStr AddEscapeStrFromStr | ( | const TStr & | Str | ) | [static] |
Definition at line 101 of file json.h.
{
TChA ChA; AddEscapeChAFromStr(Str, ChA); return ChA; }
| void TJsonVal::AddQChAFromStr | ( | const TStr & | Str, |
| TChA & | ChA | ||
| ) | [static] |
Definition at line 176 of file json.cpp.
{
ChA+="\"";
AddEscapeChAFromStr(Str, ChA);
ChA+="\"";
}
| void AddToArr | ( | const PJsonVal & | Val | ) |
| PJsonVal GetArrVal | ( | const int & | ValN | ) | const |
| int GetArrVals | ( | ) | const |
| void TJsonVal::GetChAFromVal | ( | const PJsonVal & | Val, |
| TChA & | ChA | ||
| ) | [static] |
Definition at line 182 of file json.cpp.
{
switch (Val->GetJsonValType()){
case jvtNull:
ChA+="null"; break;
case jvtBool:
if (Val->GetBool()){ChA+="true";} else {ChA+="false";} break;
case jvtNum:
ChA+=TStr::Fmt("%g", Val->GetNum()); break;
case jvtStr:
AddQChAFromStr(Val->GetStr(), ChA); break;
case jvtArr:
ChA+="[";
for (int ArrValN=0; ArrValN<Val->GetArrVals(); ArrValN++){
if (ArrValN>0){ChA+=", ";}
GetChAFromVal(Val->GetArrVal(ArrValN), ChA);
}
ChA+="]";
break;
case jvtObj:
ChA+="{";
for (int ObjKeyN=0; ObjKeyN<Val->GetObjKeys(); ObjKeyN++){
if (ObjKeyN>0){ChA+=", ";}
TStr ObjKey; PJsonVal ObjVal; Val->GetObjKeyVal(ObjKeyN, ObjKey, ObjVal);
AddQChAFromStr(ObjKey, ChA);
ChA+=":";
GetChAFromVal(ObjVal, ChA);
}
ChA+="}";
break;
default: TExcept::Throw("Error parsing json");
}
}
| TJsonValType GetJsonValType | ( | ) | const |
| bool GetObjBool | ( | const TStr & | Key | ) | const |
| bool GetObjBool | ( | const char * | Key | ) | const |
| bool TJsonVal::GetObjBool | ( | const TStr & | Key, |
| const bool & | DefBool | ||
| ) | const |
| bool TJsonVal::GetObjBool | ( | const char * | Key, |
| const bool & | DefBool | ||
| ) | const |
| PJsonVal TJsonVal::GetObjKey | ( | const TStr & | Key | ) | const |
| PJsonVal TJsonVal::GetObjKey | ( | const char * | Key | ) | const |
| int GetObjKeys | ( | ) | const |
| void GetObjKeyVal | ( | const int & | KeyValN, |
| TStr & | Key, | ||
| PJsonVal & | Val | ||
| ) | const |
| double GetObjNum | ( | const char * | Key | ) | const |
| double TJsonVal::GetObjNum | ( | const TStr & | Key, |
| const double & | DefNum | ||
| ) | const |
| double TJsonVal::GetObjNum | ( | const char * | Key, |
| const double & | DefNum | ||
| ) | const |
| TStr TJsonVal::GetObjStr | ( | const TStr & | Key, |
| const TStr & | DefStr | ||
| ) | const |
| TStr TJsonVal::GetObjStr | ( | const char * | Key, |
| const TStr & | DefStr | ||
| ) | const |
| TStr TJsonVal::GetStrFromVal | ( | const PJsonVal & | Val | ) | [static] |
Definition at line 215 of file json.cpp.
{
TChA ChA;
GetChAFromVal(Val, ChA);
return ChA;
}
| PJsonVal TJsonVal::GetValFromLx | ( | TILx & | Lx | ) | [static] |
Definition at line 61 of file json.cpp.
{
static TFSet ValExpect=TFSet()|syIdStr|syFlt|syQStr|syLBracket|syLBrace;
PJsonVal Val=TJsonVal::New();
if ((Lx.Sym==syIdStr)&&(Lx.Str=="null")){
Val->PutNull(); Lx.GetSym();
} else if ((Lx.Sym==syIdStr)&&(Lx.Str=="true")){
Val->PutBool(true); Lx.GetSym();
} else if ((Lx.Sym==syIdStr)&&(Lx.Str=="false")){
Val->PutBool(false); Lx.GetSym();
} else if (Lx.Sym==syFlt){
Val->PutNum(Lx.Flt); Lx.GetSym();
} else if (Lx.Sym==syQStr){
Val->PutStr(Lx.Str); Lx.GetSym();
} else if (Lx.Sym==syLBracket){
Val->PutArr(); Lx.GetSym(ValExpect); // added ValExpect to correctyl parse arrays of floats
if (Lx.Sym!=syRBracket){
forever{
PJsonVal SubVal=TJsonVal::GetValFromLx(Lx);
Val->AddToArr(SubVal);
if (Lx.Sym==syComma){Lx.GetSym(ValExpect);}
else if (Lx.Sym==syRBracket){break;}
else {TExcept::Throw("JSON Array not properly formed.");}
}
}
Lx.GetSym();
} else if (Lx.Sym==syLBrace){
Val->PutObj(); Lx.GetSym(TFSet()|syRBrace|syQStr);
if (Lx.Sym!=syRBrace){
forever{
TStr SubKey=Lx.Str;
Lx.GetSym(syColon);
Lx.GetSym(ValExpect);
PJsonVal SubVal=TJsonVal::GetValFromLx(Lx);
Val->AddToObj(SubKey, SubVal);
if (Lx.Sym==syComma){Lx.GetSym(TFSet()|syQStr);}
else if (Lx.Sym==syRBrace){break;}
else {TExcept::Throw("JSON Object not properly formed.");}
}
}
Lx.GetSym();
} else {
TExcept::Throw("Unexpected JSON symbol.");
}
return Val;
}
| static PJsonVal GetValFromStr | ( | const TStr & | JsonStr | ) | [static] |
| bool IsObjKey | ( | const char * | Key | ) | const |
| static PJsonVal NewArr | ( | ) | [static] |
Definition at line 47 of file json.h.
{ PJsonVal Val = TJsonVal::New(); Val->PutArr(); return Val; }
| static PJsonVal NewArr | ( | const TJsonValV & | ValV | ) | [static] |
| static PJsonVal NewBool | ( | const bool & | Bool | ) | [static] |
Definition at line 44 of file json.h.
{ PJsonVal Val = TJsonVal::New(); Val->PutBool(Bool); return Val; }
| static PJsonVal NewNull | ( | ) | [static] |
Definition at line 43 of file json.h.
{ PJsonVal Val = TJsonVal::New(); Val->PutNull(); return Val; }
| static PJsonVal NewNum | ( | const double & | Num | ) | [static] |
Definition at line 45 of file json.h.
{ PJsonVal Val = TJsonVal::New(); Val->PutNum(Num); return Val; }
| static PJsonVal NewObj | ( | ) | [static] |
Definition at line 50 of file json.h.
{ PJsonVal Val = TJsonVal::New(); Val->PutObj(); return Val; }
Definition at line 51 of file json.h.
{
PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }
Definition at line 53 of file json.h.
{
PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }
Definition at line 55 of file json.h.
{
PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }
Definition at line 57 of file json.h.
{
PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }
Definition at line 59 of file json.h.
{
PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }
Definition at line 46 of file json.h.
{ PJsonVal Val = TJsonVal::New(); Val->PutStr(Str); return Val; }
| void PutBool | ( | const bool & | _Bool | ) |
| void PutNum | ( | const double & | _Num | ) |