本文整理汇总了C++中CStrRef::isNumericWithVal方法的典型用法代码示例。如果您正苦于以下问题:C++ CStrRef::isNumericWithVal方法的具体用法?C++ CStrRef::isNumericWithVal怎么用?C++ CStrRef::isNumericWithVal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CStrRef
的用法示例。
在下文中一共展示了CStrRef::isNumericWithVal方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: f_json_decode
Variant f_json_decode(CStrRef json, bool assoc /* = false */,
CVarRef options /* = 0 */) {
if (json.empty()) {
return null;
}
int64 json_options = options.toInt64();;
if (options.isBoolean() && options.toBooleanVal()) {
json_options = k_JSON_FB_LOOSE;
}
Variant z;
if (JSON_parser(z, json.data(), json.size(), assoc, (json_options & k_JSON_FB_LOOSE))) {
return z;
}
if (json.size() == 4) {
if (!strcasecmp(json.data(), "null")) return null;
if (!strcasecmp(json.data(), "true")) return true;
} else if (json.size() == 5 && !strcasecmp(json.data(), "false")) {
return false;
}
int64 p;
double d;
DataType type = json->isNumericWithVal(p, d, 0);
if (type == KindOfInt64) {
return p;
} else if (type == KindOfDouble) {
return d;
}
return null;
}
示例2: f_json_decode
Variant f_json_decode(CStrRef json, bool assoc /* = false */,
CVarRef options /* = 0 */) {
if (json.empty()) {
return uninit_null();
}
int64_t json_options = options.toInt64();
if (options.isBoolean() && options.toBooleanVal()) {
json_options = k_JSON_FB_LOOSE;
}
Variant z;
if (JSON_parser(z, json.data(), json.size(), assoc,
(json_options & k_JSON_FB_LOOSE))) {
return z;
}
if (json.size() == 4) {
if (!strcasecmp(json.data(), "null")) return uninit_null();
if (!strcasecmp(json.data(), "true")) return true;
} else if (json.size() == 5 && !strcasecmp(json.data(), "false")) {
return false;
}
int64_t p;
double d;
DataType type = json->isNumericWithVal(p, d, 0);
if (type == KindOfInt64) {
return p;
} else if (type == KindOfDouble) {
return d;
}
char ch0 = json.charAt(0);
if (json.size() > 1 && ch0 == '"' && json.charAt(json.size() - 1) == '"') {
return json.substr(1, json.size() - 2);
}
if ((json_options & k_JSON_FB_LOOSE) && json.size() > 1 &&
ch0 == '\'' && json.charAt(json.size() - 1) == '\'') {
return json.substr(1, json.size() - 2);
}
if (ch0 == '{' || ch0 == '[') { /* invalid JSON string */
return uninit_null();
}
return json;
}
示例3: f_json_decode
Variant f_json_decode(CStrRef json, bool assoc /* = false */,
bool loose /* = false */) {
if (json.empty()) {
return null;
}
Variant z;
if (JSON_parser(z, json.data(), json.size(), assoc, loose)) {
return z;
}
if (json.size() == 4) {
if (!strcasecmp(json.data(), "null")) return null;
if (!strcasecmp(json.data(), "true")) return true;
} else if (json.size() == 5 && !strcasecmp(json.data(), "false")) {
return false;
}
int64 p;
double d;
DataType type = json->isNumericWithVal(p, d, 0);
if (type == KindOfInt64) {
return p;
} else if (type == KindOfDouble) {
return d;
}
char ch0 = json.charAt(0);
if (json.size() > 1 && ch0 == '"' && json.charAt(json.size() - 1) == '"') {
return json.substr(1, json.size() - 2);
}
if (loose && json.size() > 1 &&
ch0 == '\'' && json.charAt(json.size() - 1) == '\'') {
return json.substr(1, json.size() - 2);
}
if (ch0 == '{' || ch0 == '[') { /* invalid JSON string */
return null;
}
return json;
}