iguana icon indicating copy to clipboard operation
iguana copied to clipboard

json数组内含字符串和整数,怎么实现转换

Open obqrn opened this issue 9 months ago • 7 comments

struct person
{
    std::string_view name;
    std::vector<iguana::numeric_str> age;
};
person p1;
std::string ss = "{\"name\":\"tom\", \"age\": [20, \"30\"]}";
iguana::from_json(p1, ss);

数组内含字符串和整数,std::vectoriguana::numeric_str反序列化异常。 有什么方法能支持可能同时两种类型的转换?

obqrn avatar Mar 05 '25 08:03 obqrn

array里面不同类型是不支持的,单可以用variant来表示可能的不同类型。

qicosmos avatar Mar 06 '25 01:03 qicosmos

感谢哈。 如果部分内容完全未知,有办法获取未知内容的原始数据吗,比如获取age下的完整内容,或者定义一个raw_json类型可以获取原始内容。

obqrn avatar Mar 06 '25 06:03 obqrn

struct personbase
{
    std::string_view name;
};
struct person :public personbase
{
    std::vector<std::variant<int,std::string_view>> age;
};

person p1;
std::string ss = "{\"name\":\"tom\", \"age\": [20, \"30\"]}";
iguana::from_json(p1, ss);

这样编译会报错

obqrn avatar Mar 06 '25 08:03 obqrn

std::vector variant还没支持,单独的variant 字段可以

qicosmos avatar Mar 07 '25 01:03 qicosmos

有办法获取某字段的原始数据吗,未来可以支持吗

obqrn avatar Mar 11 '25 06:03 obqrn

暂时不支持,你可以自己根据key去查找字符串,然后substr得到你想要的原始字符串。

qicosmos avatar Mar 11 '25 06:03 qicosmos

rfl::ExtraFieldsrfl::Generic extra_fields,这个三方库的方法,可以在iguana实现吗,挺好用的

obqrn avatar Mar 27 '25 01:03 obqrn