mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Update JsonCPP to 1.8.3 (#6466)
* Update JsonCPP to 1.8.3 * Fix deprecated functions Json::FastWriter, Json::StyledWriter and Json::Reader are marked deprecated since 1.1 and are deprecated in 0.8 but not shown at compilation time. Use new methods to serialize/deserialize
This commit is contained in:
parent
f7e57a0d20
commit
50423d8c72
10 changed files with 549 additions and 103 deletions
|
@ -46,12 +46,15 @@ Json::Value fetchJsonValue(const std::string &url,
|
|||
return Json::Value();
|
||||
}
|
||||
Json::Value root;
|
||||
Json::Reader reader;
|
||||
std::istringstream stream(fetch_result.data);
|
||||
|
||||
if (!reader.parse(stream, root)) {
|
||||
Json::CharReaderBuilder builder;
|
||||
builder.settings_["collectComments"] = false;
|
||||
std::string errs;
|
||||
|
||||
if (!Json::parseFromStream(builder, stream, &root, &errs)) {
|
||||
errorstream << "URL: " << url << std::endl;
|
||||
errorstream << "Failed to parse json data " << reader.getFormattedErrorMessages();
|
||||
errorstream << "Failed to parse json data " << errs << std::endl;
|
||||
if (fetch_result.data.size() > 100) {
|
||||
errorstream << "Data (" << fetch_result.data.size()
|
||||
<< " bytes) printed to warningstream." << std::endl;
|
||||
|
@ -64,3 +67,13 @@ Json::Value fetchJsonValue(const std::string &url,
|
|||
|
||||
return root;
|
||||
}
|
||||
|
||||
std::string fastWriteJson(const Json::Value &value)
|
||||
{
|
||||
std::ostringstream oss;
|
||||
Json::StreamWriterBuilder builder;
|
||||
builder["indentation"] = "";
|
||||
std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
|
||||
writer->write(value, &oss);
|
||||
return oss.str();
|
||||
}
|
||||
|
|
|
@ -23,3 +23,5 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
|
||||
Json::Value fetchJsonValue(const std::string &url,
|
||||
std::vector<std::string> *extra_headers);
|
||||
|
||||
std::string fastWriteJson(const Json::Value &value);
|
||||
|
|
12
src/mods.cpp
12
src/mods.cpp
|
@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "subgame.h"
|
||||
#include "settings.h"
|
||||
#include "porting.h"
|
||||
#include "convert_json.h"
|
||||
|
||||
static bool parseDependsLine(std::istream &is,
|
||||
std::string &dep, std::set<char> &symbols)
|
||||
|
@ -374,7 +375,7 @@ bool ModMetadata::save(const std::string &root_path)
|
|||
}
|
||||
|
||||
bool w_ok = fs::safeWriteToFile(root_path + DIR_DELIM + m_mod_name,
|
||||
Json::FastWriter().write(json));
|
||||
fastWriteJson(json));
|
||||
|
||||
if (w_ok) {
|
||||
m_modified = false;
|
||||
|
@ -393,11 +394,14 @@ bool ModMetadata::load(const std::string &root_path)
|
|||
return false;
|
||||
}
|
||||
|
||||
Json::Reader reader;
|
||||
Json::Value root;
|
||||
if (!reader.parse(is, root)) {
|
||||
Json::CharReaderBuilder builder;
|
||||
builder.settings_["collectComments"] = false;
|
||||
std::string errs;
|
||||
|
||||
if (!Json::parseFromStream(builder, is, &root, &errs)) {
|
||||
errorstream << "ModMetadata[" << m_mod_name << "]: failed read data "
|
||||
"(Json decoding failure)." << std::endl;
|
||||
"(Json decoding failure). Message: " << errs << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "porting.h" // strlcpy
|
||||
#include "server.h"
|
||||
#include "settings.h"
|
||||
#include "convert_json.h"
|
||||
|
||||
/*
|
||||
RemotePlayer
|
||||
|
@ -76,8 +77,8 @@ void RemotePlayer::serializeExtraAttributes(std::string &output)
|
|||
json_root[attr.first] = attr.second;
|
||||
}
|
||||
|
||||
Json::FastWriter writer;
|
||||
output = writer.write(json_root);
|
||||
output = fastWriteJson(json_root);
|
||||
|
||||
m_sao->setExtendedAttributeModified(false);
|
||||
}
|
||||
|
||||
|
@ -120,9 +121,13 @@ void RemotePlayer::deSerialize(std::istream &is, const std::string &playername,
|
|||
|
||||
try {
|
||||
const std::string &extended_attributes = args.get("extended_attributes");
|
||||
Json::Reader reader;
|
||||
std::istringstream iss(extended_attributes);
|
||||
Json::CharReaderBuilder builder;
|
||||
builder.settings_["collectComments"] = false;
|
||||
std::string errs;
|
||||
|
||||
Json::Value attr_root;
|
||||
reader.parse(extended_attributes, attr_root);
|
||||
Json::parseFromStream(builder, iss, &attr_root, &errs);
|
||||
|
||||
const Json::Value::Members attr_list = attr_root.getMemberNames();
|
||||
for (const auto &it : attr_list) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -185,8 +185,8 @@ const std::string serializeJson(const std::vector<ServerListSpec> &serverlist)
|
|||
list.append(it);
|
||||
}
|
||||
root["list"] = list;
|
||||
Json::FastWriter writer;
|
||||
return writer.write(root);
|
||||
|
||||
return fastWriteJson(root);
|
||||
}
|
||||
|
||||
|
||||
|
@ -249,10 +249,9 @@ void sendAnnounce(AnnounceAction action,
|
|||
server["lag"] = lag;
|
||||
}
|
||||
|
||||
Json::FastWriter writer;
|
||||
HTTPFetchRequest fetch_request;
|
||||
fetch_request.url = g_settings->get("serverlist_url") + std::string("/announce");
|
||||
fetch_request.post_fields["json"] = writer.write(server);
|
||||
fetch_request.post_fields["json"] = fastWriteJson(server);
|
||||
fetch_request.multipart = true;
|
||||
httpfetch_async(fetch_request);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue