diff --git a/Message/Json.cpp b/Message/Json.cpp index adb29ced..39771478 100644 --- a/Message/Json.cpp +++ b/Message/Json.cpp @@ -1,6 +1,6 @@ #include "Json.h" -static Json Null; +static const Json Null; Json::Json() { Init(nullptr, 0); } @@ -11,7 +11,8 @@ Json::Json(cstring str) void Json::Init(cstring str, int len) { - + _str = str; + _len = len; } // 值类型 @@ -38,7 +39,7 @@ JsonType Json::Type() const { char ch = _str[i]; // 判断非数字 - if(ch < '0' && ch > '9') + if(ch < '0' || ch > '9') { // 负号只能出现在第一位 if(ch == '-' && i > 0) return JsonType::null; @@ -51,7 +52,7 @@ JsonType Json::Type() const } } - return isFloat ? JsonType::integer : JsonType::Float; + return isFloat ? JsonType::Float : JsonType::integer; } // 获取值 @@ -185,7 +186,8 @@ int readString(cstring str, int len) // 读取成员。找到指定成员,并用它的值构造一个新的对象 Json Json::operator[](cstring key) const { - if(!_str && !_len) return Json::Null; + Json json; + if(!_str && !_len) return json; String s((cstring)_str, _len); @@ -196,7 +198,7 @@ Json Json::operator[](cstring key) const int p = 0; while(true){ p = s.IndexOf(key, p); - if(p < 0) return Json::Null; + if(p < 0) return json; p += n; @@ -228,17 +230,16 @@ Json Json::operator[](cstring key) const } } - Json json; json.Init(val, n); return json; } // 设置成员。找到指定成员,或添加成员,并返回对象 -Json& Json::operator[](cstring key) +/*Json& Json::operator[](cstring key) { return *this; -} +}*/ // 特殊支持数组 int Json::Length() const diff --git a/Message/Json.h b/Message/Json.h index 27c61de6..7611cd67 100644 --- a/Message/Json.h +++ b/Message/Json.h @@ -43,7 +43,7 @@ public: // 读取成员。找到指定成员,并用它的值构造一个新的对象 Json operator[](cstring key) const; // 设置成员。找到指定成员,或添加成员,并返回对象 - Json& operator[](cstring key); + //Json& operator[](cstring key); // 特殊支持数组 int Length() const; diff --git a/Test/JsonTest.cpp b/Test/JsonTest.cpp index 347e7bf5..1065ff09 100644 --- a/Test/JsonTest.cpp +++ b/Test/JsonTest.cpp @@ -27,7 +27,7 @@ static void TestRead() assert(name.Type() == JsonType::string, "Type()"); auto enable = json["enable"]; - assert(id.Type() == JsonType::boolean, "Type()"); + assert(enable.Type() == JsonType::boolean, "Type()"); auto noval = json["noval"]; assert(noval.Type() == JsonType::null, "Type()"); @@ -44,7 +44,7 @@ static void TestRead() void Json::Test() { - TS("TestList"); + TS("TestJson"); debug_printf("TestJson......\r\n");