当前位置: 首页 > 面试题库 >

将C ++类转换为JSON

阎建中
2023-03-14
问题内容

我想创建一个包含我的类的实例变量的JSON字符串。

例如,

class Example {  
    std::string string;  
    std::map<std::string, std:string> map;  
    std::vector<int> vector;  
};

会成为:

{
    "string":"the-string-value",
    "map": {
        "key1":"val1",
        "key2":"val2"
    },
    "vector":[1,2,3,4]
}

我研究了几个用于创建JSON的C
++库,它们似乎都异常复杂。我想要类似Javascript的东西JSON.stringify(object)。换句话说,只需将std ::
map传递给它并接收一个字符串。该地图可能包含其他地图,向量,列表,字符串,数字和布尔值。

最好的方法是什么?

谢谢你的帮助。

编辑

我研究了以下内容:

json spirit,jsoncpp,zoolib,JOST,CAJUN,libjson,nosjob,JsonBox,jsonme–

据我了解,我可以像下面的答案中那样构造一个单独的JSON对象,然后转换为JSON,我希望能够将我的东西存储在标准集合中并进行转换。

编辑2

好的,放弃序列化类的想法,因为在C ++缺乏反思的情况下看来这是不可能的。

有没有一种好方法可以将包含std:maps,std :: vectors,std :: lists,数字,字符串和布尔值的std ::
map转换为JSON,而无需更改数据类型或将数据复制到新的数据类型?

谢谢。


问题答案:

JSON Spirit允许您这样做:

Object addr_obj;

addr_obj.push_back( Pair( "house_number", 42 ) );
addr_obj.push_back( Pair( "road",         "East Street" ) );
addr_obj.push_back( Pair( "town",         "Newtown" ) );

ofstream os( "address.txt" );
os.write( addr_obj, os, pretty_print );
os.close();

输出:

{
    "house_number" : 42,
    "road" : "East Street",
    "town" : "Newtown"
}

该json_map_demo.cpp将是一个不错的地方开始,我想。



 类似资料:
  • 问题内容: 我有一个想要表示为C#类的复杂JSON对象。我在名为“ Form”的父类上有一个良好的开端,但是如何代表不同类型的集合(请参见下面的“ elements”对象)? 这是JSON对象: 我开始的课程看起来像这样: 如何处理“ elements”属性以获得所需的JSON输出? 我正在WCF 4.0和web.config中的以下属性一起使用:automaticFormatSelectionE

  • 问题内容: 我必须将一组C#类(类库)转换为SQL Server使用的SQL表,以便可以将数据存储在数据库中并通过数据库进行操作。 问题在于这些类的数量很大(超过1000个类),并且手动设置数据库模式(表,索引,存储过程等)将花费很长时间-更不用说类层次结构了我需要保持。 因此,问题是: 有没有可以帮助我从C#类库创建数据库架构的工具? 我并不是在寻找完美的工具(但是如果有这样的工具,我将非常高兴

  • 问题内容: 有什么工具可以将C代码转换为Java代码?我有兴趣将此代码转换为Java: 问题答案: 您是否考虑过使用JNI来代替从C到Java的转换?

  • 我试图将Python程序转换为C++,因为我对Python的理解稍微好一点。然而,翻译出来的代码并不起作用。有人能帮我一下吗?我试图用C++制作一个数独板,但它在中返回一些值,而不是其他位置。加上它们是无效的,并包含0。 这个程序的输出是一个二维数组,所有值都不在0,并且对数独板有效: 是一个长度为9的二维数组,在每个位置都有9个列出的语句。在这里,它们都被初始化为。 这个程序的输出也是一个二维数

  • 我有如下XML文件: 如何快速将其转换为C#类以通过LINQ使用access数据?我必须为任何XML文件情况手动编写类吗?那么JSON格式呢?

  • 问题内容: 有谁知道如何将包含json的字符串转换为C#数组。我有这个从webBrowser读取text / json并将其存储到字符串中。 只需要以某种方式将json字符串更改为数组即可。一直在查看Json.NET,但是我不确定那是否是我所需要的,因为我不想将数组更改为json。但是反过来。谢谢您的帮助! 问题答案: 只需使用字符串并使用JavaScriptSerializer将其反序列化为本地