comparison OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp @ 4444:11ea0a05115b

new function in OrthancPluginCppWrapper: ReadJsonWithoutComments()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 13 Jan 2021 09:19:32 +0100
parents d9473bd5ed43
children 5e6b5fef92f8
comparison
equal deleted inserted replaced
4443:fd958175c5b9 4444:11ea0a05115b
311 return CheckHttp(OrthancPluginRestApiPut(GetGlobalContext(), &buffer_, uri.c_str(), b, bodySize)); 311 return CheckHttp(OrthancPluginRestApiPut(GetGlobalContext(), &buffer_, uri.c_str(), b, bodySize));
312 } 312 }
313 } 313 }
314 314
315 315
316 static bool ReadJsonInternal(Json::Value& target,
317 const void* buffer,
318 size_t size,
319 bool collectComments)
320 {
321 #if JSONCPP_USE_DEPRECATED == 1
322 Json::Reader reader;
323 return reader.parse(reinterpret_cast<const char*>(buffer),
324 reinterpret_cast<const char*>(buffer) + size, target, collectComments);
325 #else
326 Json::CharReaderBuilder builder;
327 builder.settings_["collectComments"] = collectComments;
328
329 const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
330 assert(reader.get() != NULL);
331
332 JSONCPP_STRING err;
333 if (reader->parse(reinterpret_cast<const char*>(buffer),
334 reinterpret_cast<const char*>(buffer) + size, &target, &err))
335 {
336 return true;
337 }
338 else
339 {
340 LOG(ERROR) << "Cannot parse JSON: " << err;
341 return false;
342 }
343 #endif
344 }
345
346
316 bool ReadJson(Json::Value& target, 347 bool ReadJson(Json::Value& target,
317 const std::string& source) 348 const std::string& source)
318 { 349 {
319 return ReadJson(target, source.empty() ? NULL : source.c_str(), source.size()); 350 return ReadJson(target, source.empty() ? NULL : source.c_str(), source.size());
320 } 351 }
322 353
323 bool ReadJson(Json::Value& target, 354 bool ReadJson(Json::Value& target,
324 const void* buffer, 355 const void* buffer,
325 size_t size) 356 size_t size)
326 { 357 {
327 #if JSONCPP_USE_DEPRECATED == 1 358 return ReadJsonInternal(target, buffer, size, true);
328 Json::Reader reader;
329 return reader.parse(reinterpret_cast<const char*>(buffer),
330 reinterpret_cast<const char*>(buffer) + size, target);
331 #else
332 Json::CharReaderBuilder builder;
333 const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
334 assert(reader.get() != NULL);
335 JSONCPP_STRING err;
336 if (reader->parse(reinterpret_cast<const char*>(buffer),
337 reinterpret_cast<const char*>(buffer) + size, &target, &err))
338 {
339 return true;
340 }
341 else
342 {
343 LogError("Cannot parse JSON: " + err);
344 return false;
345 }
346 #endif
347 } 359 }
348 360
361
362 bool ReadJsonWithoutComments(Json::Value& target,
363 const std::string& source)
364 {
365 return ReadJsonWithoutComments(target, source.empty() ? NULL : source.c_str(), source.size());
366 }
367
368
369 bool ReadJsonWithoutComments(Json::Value& target,
370 const void* buffer,
371 size_t size)
372 {
373 return ReadJsonInternal(target, buffer, size, false);
374 }
375
349 376
350 void WriteFastJson(std::string& target, 377 void WriteFastJson(std::string& target,
351 const Json::Value& source) 378 const Json::Value& source)
352 { 379 {
353 #if JSONCPP_USE_DEPRECATED == 1 380 #if JSONCPP_USE_DEPRECATED == 1