Skip to content

Commit 2f033e9

Browse files
committed
update cppjson source code
1 parent 602c3c4 commit 2f033e9

File tree

9 files changed

+12
-5
lines changed

9 files changed

+12
-5
lines changed

cpp_json/JsonAPI/Json.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ namespace JSON{
7676
case JSON_FALSE: return "boolean";
7777
case JSON_ARRAY: return "array";
7878
case JSON_OBJECT: return "object";
79+
case JSON_NUMBER: return "number";
7980
}
8081
}
8182

cpp_json/JsonAPI/Jsonparser.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ namespace Jsonparser{
148148
return ret;
149149
}
150150
PARSE_RESULT parser::parse_number(){
151+
const char * p = this->stk.json, *q;
151152
if(*this->stk.json == '-') this->stk.json++;
152153
if(*this->stk.json == '0') this->stk.json++;
153154
else{
@@ -167,7 +168,10 @@ namespace Jsonparser{
167168
}
168169
errno = 0;
169170
j.set_null();
170-
j.set_number(strtod(this->stk.json, nullptr));
171+
q = stk.json;
172+
stk.json = p;
173+
j.set_number(std::stod(stk.json));
174+
stk.json = q;
171175
if(errno == ERANGE && (j.get_number() == HUGE_VAL || j.get_number() == -HUGE_VAL))
172176
return PARSE_NUMBER_TOO_BIG;
173177
return PARSE_OK;

cpp_json/JsonAPI/Jsonstringifier.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ namespace Jsonstringifier{
4141
case JSON::JSON_NULL: stk.put_string( "null"); break;
4242
case JSON::JSON_FALSE: stk.put_string("false"); break;
4343
case JSON::JSON_TRUE: stk.put_string("true"); break;
44-
case JSON::JSON_NUMBER: stk.top -= 32 - sprintf((char*)stk.push( 32), "%.17g", j.get_number()); break;
44+
case JSON::JSON_NUMBER: stk.top -= 32 - sprintf((char*)stk.push( 32), "%.16g", j.get_number()); break;
4545
case JSON::JSON_STRING: stringify_string(j.get_string()); break;
4646
case JSON::JSON_ARRAY:
4747
stk.put_char('[');
Binary file not shown.
Binary file not shown.
Binary file not shown.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
Start testing: Dec 18 18:29 CST
1+
Start testing: Dec 19 17:36 CST
22
----------------------------------------------------------
3-
End testing: Dec 18 18:29 CST
3+
End testing: Dec 19 17:36 CST

cpp_json/cmake-build-debug/cpp_json

456 Bytes
Binary file not shown.

cpp_json/main.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ int main() {
99
Jsonparser::parser p(j);
1010
p.parse("{\n"
1111
" \"name\": \"vue_test\",\n"
12-
" \"version\": \"0.1.0\",\n"
12+
" \"version\": 1.4,\n"
1313
" \"private\": true,\n"
1414
" \"scripts\": {\n"
1515
" \"serve\": \"vue-cli-service serve\",\n"
@@ -49,6 +49,8 @@ int main() {
4949
" \"not dead\"\n"
5050
" ]\n"
5151
"}");
52+
//p.parse("1.4");
53+
//cout << j.get_number() << endl;
5254
Jsonparser::parser p2(j2);
5355
//p2.parse("{\"key\":[true, false, {\"1\":true}, {\"2\": false}, \"sfjdls\", [true, {\"a\": false}]]}");
5456
cout << j.get_type_format() << ' ' << endl;

0 commit comments

Comments
 (0)