Core: Support INF/NAN in JSON from/to native
This commit is contained in:
@ -1056,7 +1056,15 @@ Variant JSON::_to_native(const Variant &p_json, bool p_allow_objects, int p_dept
|
||||
if (s.begins_with("i:")) {
|
||||
return s.substr(2).to_int();
|
||||
} else if (s.begins_with("f:")) {
|
||||
return s.substr(2).to_float();
|
||||
const String sub = s.substr(2);
|
||||
if (sub == "inf") {
|
||||
return Math::INF;
|
||||
} else if (sub == "-inf") {
|
||||
return -Math::INF;
|
||||
} else if (sub == "nan") {
|
||||
return Math::NaN;
|
||||
}
|
||||
return sub.to_float();
|
||||
} else if (s.begins_with("s:")) {
|
||||
return s.substr(2);
|
||||
} else if (s.begins_with("sn:")) {
|
||||
|
||||
@ -60,6 +60,9 @@ TEST_CASE("[JSON][Native] Conversion between native and JSON formats") {
|
||||
// Numbers and strings (represented as JSON strings).
|
||||
test(1, R"("i:1")");
|
||||
test(1.0, R"("f:1.0")");
|
||||
test(Math::INF, R"("f:inf")");
|
||||
test(-Math::INF, R"("f:-inf")");
|
||||
test(Math::NaN, R"("f:nan")");
|
||||
test(String("abc"), R"("s:abc")");
|
||||
test(StringName("abc"), R"("sn:abc")");
|
||||
test(NodePath("abc"), R"("np:abc")");
|
||||
|
||||
Reference in New Issue
Block a user