由于字符串到JSON转换而产生的异常如何解决

How do I solve exception generated due to string to json conversion?

本文关键字:何解决 异常 解决 字符串 JSON 转换      更新时间:2023-10-16

我试图使用nlohmann框架在C 中使用NLOHMANN框架来理解JSON和将JSON转换字符串到JSON转换。但是,我会因产生异常而遇到问题,但我不了解其生成的原因。

以下是我从Nlohmann Framework使用的代码。我尝试创建一个JSON对象" J_STRING",添加属性" Transformation_matrix",然后从预定义的变量"问候"中向其添加相应的值。现在,我正在尝试将字符串转换为JSON,然后将其解析,然后再次转换为字符串。基本上,我试图通过UDP发送这些数据,这是我项目背后的整体想法。为此,我需要从字符串转换为JSON,进行一些计算以提取属性的一定值,然后将其转换回字符串并通过UDP发送。当我尝试从字符串转换为JSON时,我会从编译器中获得异常。我正在使用Visual Studio2019。以下是生成的例外:

" JSONCPP2.EXE中的0x772718a2 in nothanded Exception:Microsoft C 例外:nlohmann :: detail :: type_error在存储器位置0x00ee9f504。"

让我知道为什么要生成这样的例外。当我编译代码时,它没有说明错误。但是,当我执行它时,我会得到一个例外。我添加了必要的文件和标题。

#include<iostream>
#include<sstream>
#include<nlohmann/json.hpp>
using json = nlohmann::json;
int main() {
    std::string greetings = "greetings from string";
    json j_string;
    j_string["transformation matrix"] = greetings;
    auto cpp_string = j_string.get<std::string>();
    std::string serialized_string = j_string.dump();
    std::cout << serialized_string << 'n';
}

我的预期结果是:

[
"transfornation matrix" : "greetings from string"
]

对于一般安全,您应该确保在致电j_string.get<std::string>()之前确保j_string.is_string()避免此类例外。

另外,请注意,由于您仅使用j_string["transformation matrix"] = greetings;使用对象式分配,因此j_string成为 object 类型。如果您将字符串直接分配给j_string,则可以在 string type上进行。

这在Nlohmann/JSON示例的前两行中涵盖。

// create an empty structure (null)
json j;
// add a number that is stored as double (note the implicit conversion of j to an object)
j["pi"] = 3.141;