|
SNAP Library, Developer Reference
2012-10-02 12:56:23
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.
References TChA::AddCh(), TUnicode::DecodeUtf8(), TStr::Fmt(), TUnicodeDef::GetDef(), TUnicodeDef::IsDef(), TVec< TVal >::Len(), and TStr::Len().
Referenced by AddEscapeStrFromStr(), and AddQChAFromStr().
{
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.
References AddEscapeChAFromStr().
{
TChA ChA; AddEscapeChAFromStr(Str, ChA); return ChA; }

| void TJsonVal::AddQChAFromStr | ( | const TStr & | Str, |
| TChA & | ChA | ||
| ) | [static] |
Definition at line 176 of file json.cpp.
References AddEscapeChAFromStr().
Referenced by GetChAFromVal().
{
ChA+="\"";
AddEscapeChAFromStr(Str, ChA);
ChA+="\"";
}


| void AddToArr | ( | const PJsonVal & | Val | ) |
| PJsonVal GetArrVal | ( | const int & | ValN | ) | const |
| int GetArrVals | ( | ) | const |
| bool GetBool | ( | ) | const |
| void TJsonVal::GetChAFromVal | ( | const PJsonVal & | Val, |
| TChA & | ChA | ||
| ) | [static] |
Definition at line 182 of file json.cpp.
References AddQChAFromStr(), TStr::Fmt(), jvtArr, jvtBool, jvtNull, jvtNum, jvtObj, jvtStr, and Throw().
Referenced by GetStrFromVal().
{
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 |
| double GetNum | ( | ) | const |
Definition at line 73 of file json.h.
References EAssert, IsNum(), and Num.
Referenced by TXmlLx::GetPlainStrFromXmlStr(), TXmlParser::GetPlainStrFromXmlStr(), TXmlLx::GetReference(), TStr::IsInt(), TStr::IsInt64(), TStr::IsUInt(), and TStr::IsUInt64().


| bool GetObjBool | ( | const TStr & | Key | ) | const |
Definition at line 84 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetBool(); }

| bool GetObjBool | ( | const char * | Key | ) | const |
Definition at line 85 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetBool(); }

| 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 |
Definition at line 19 of file json.cpp.
References EAssert, IsObj(), IsObjKey(), and KeyValH.
Referenced by GetObjBool(), GetObjNum(), and GetObjStr().


| PJsonVal TJsonVal::GetObjKey | ( | const char * | Key | ) | const |
| int GetObjKeys | ( | ) | const |
| void GetObjKeyVal | ( | const int & | KeyValN, |
| TStr & | Key, | ||
| PJsonVal & | Val | ||
| ) | const |
Definition at line 86 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetNum(); }

| double GetObjNum | ( | const char * | Key | ) | const |
Definition at line 87 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetNum(); }

| double TJsonVal::GetObjNum | ( | const TStr & | Key, |
| const double & | DefNum | ||
| ) | const |
| double TJsonVal::GetObjNum | ( | const char * | Key, |
| const double & | DefNum | ||
| ) | const |
Definition at line 88 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetStr(); }

Definition at line 89 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetStr(); }

| 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.
References GetChAFromVal().
{
TChA ChA;
GetChAFromVal(Val, ChA);
return ChA;
}

| PJsonVal TJsonVal::GetValFromLx | ( | TILx & | Lx | ) | [static] |
Definition at line 61 of file json.cpp.
References TILx::Flt, forever, TILx::GetSym(), New(), TILx::Str, syColon, syComma, syFlt, syIdStr, syLBrace, syLBracket, TILx::Sym, syQStr, syRBrace, syRBracket, and Throw().
{
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] |
Referenced by TEnv::GetIfArgPrefixBool(), and TILx::GetSym().

| bool IsArr | ( | ) | const |
Definition at line 68 of file json.h.
References jvtArr.
Referenced by GetArrVals().
{return JsonValType==jvtArr;}

| bool IsBool | ( | ) | const |
| bool IsNull | ( | ) | const |
Definition at line 64 of file json.h.
References jvtNull.
Referenced by TPt< TRec >::TPt().
{return JsonValType==jvtNull;}

| bool IsNum | ( | ) | const |
| bool IsObj | ( | ) | const |
Definition at line 69 of file json.h.
References jvtObj.
Referenced by GetObjBool(), GetObjKey(), GetObjKeys(), GetObjKeyVal(), GetObjNum(), GetObjStr(), and IsObjKey().
{return JsonValType==jvtObj;}

Definition at line 80 of file json.h.
References EAssert, IsObj(), and KeyValH.
Referenced by GetObjBool(), GetObjKey(), GetObjNum(), and GetObjStr().


| bool IsObjKey | ( | const char * | Key | ) | const |
| bool IsStr | ( | ) | const |
Definition at line 21 of file json.h.
References TJsonVal().
{return new TJsonVal(SIn);}

| static PJsonVal New | ( | ) | [static] |
| static PJsonVal NewArr | ( | ) | [static] |
Definition at line 47 of file json.h.
References New().
Referenced by AddToObj().
{ 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.
References New().
Referenced by AddToObj().
{ PJsonVal Val = TJsonVal::New(); Val->PutBool(Bool); return Val; }


| static PJsonVal NewNull | ( | ) | [static] |
Definition at line 43 of file json.h.
References New().
{ PJsonVal Val = TJsonVal::New(); Val->PutNull(); return Val; }

| static PJsonVal NewNum | ( | const double & | Num | ) | [static] |
Definition at line 45 of file json.h.
References New().
Referenced by AddToObj().
{ PJsonVal Val = TJsonVal::New(); Val->PutNum(Num); return Val; }


| static PJsonVal NewObj | ( | ) | [static] |
Definition at line 50 of file json.h.
References New().
{ PJsonVal Val = TJsonVal::New(); Val->PutObj(); return Val; }

Definition at line 51 of file json.h.
References New().
{
PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }

Definition at line 53 of file json.h.
References New().
{
PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }

Definition at line 55 of file json.h.
References New().
{
PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }

Definition at line 57 of file json.h.
References New().
{
PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }

Definition at line 59 of file json.h.
References New().
{
PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }

Definition at line 46 of file json.h.
References New().
Referenced by AddToObj(), and TStr::InsStr().
{ PJsonVal Val = TJsonVal::New(); Val->PutStr(Str); return Val; }


| void PutBool | ( | const bool & | _Bool | ) |
| void PutNum | ( | const double & | _Num | ) |
| TJsonVal | ( | ) |
Definition at line 14 of file json.h.
Referenced by AddToObj(), GetObjBool(), GetObjKey(), GetObjKeys(), GetObjKeyVal(), GetObjNum(), GetObjStr(), and IsObjKey().