summaryrefslogtreecommitdiff
path: root/src/script/lua_api/l_util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/script/lua_api/l_util.cpp')
-rw-r--r--src/script/lua_api/l_util.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp
index dffbc66d1..5128e79e6 100644
--- a/src/script/lua_api/l_util.cpp
+++ b/src/script/lua_api/l_util.cpp
@@ -27,6 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <json/json.h>
#include "cpp_api/s_security.h"
#include "porting.h"
+#include "convert_json.h"
#include "debug.h"
#include "log.h"
#include "tool.h"
@@ -95,12 +96,14 @@ int ModApiUtil::l_parse_json(lua_State *L)
Json::Value root;
{
- Json::Reader reader;
std::istringstream stream(jsonstr);
- if (!reader.parse(stream, root)) {
- errorstream << "Failed to parse json data "
- << reader.getFormattedErrorMessages();
+ Json::CharReaderBuilder builder;
+ builder.settings_["collectComments"] = false;
+ std::string errs;
+
+ if (!Json::parseFromStream(builder, stream, &root, &errs)) {
+ errorstream << "Failed to parse json data " << errs << std::endl;
size_t jlen = strlen(jsonstr);
if (jlen > 100) {
errorstream << "Data (" << jlen
@@ -145,11 +148,9 @@ int ModApiUtil::l_write_json(lua_State *L)
std::string out;
if (styled) {
- Json::StyledWriter writer;
- out = writer.write(root);
+ out = root.toStyledString();
} else {
- Json::FastWriter writer;
- out = writer.write(root);
+ out = fastWriteJson(root);
}
lua_pushlstring(L, out.c_str(), out.size());
return 1;