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

如何在Qt5中创建/读取/写入JSon文件

吴胜涝
2023-03-14
问题内容

Qt5有一个新的JSon解析器,我想使用它。问题在于,对于函数在外行术语中的作用以及如何编写代码尚不清楚。那或者我可能读错了。

我想知道在Qt5中创建Json文件的代码以及“封装”的含义。


问题答案:

示例:从文件读取json

/* test.json */
{
   "appDesc": {
      "description": "SomeDescription",
      "message": "SomeMessage"
   },
   "appName": {
      "description": "Home",
      "message": "Welcome",
      "imp":["awesome","best","good"]
   }
}


void readJson()
   {
      QString val;
      QFile file;
      file.setFileName("test.json");
      file.open(QIODevice::ReadOnly | QIODevice::Text);
      val = file.readAll();
      file.close();
      qWarning() << val;
      QJsonDocument d = QJsonDocument::fromJson(val.toUtf8());
      QJsonObject sett2 = d.object();
      QJsonValue value = sett2.value(QString("appName"));
      qWarning() << value;
      QJsonObject item = value.toObject();
      qWarning() << tr("QJsonObject of description: ") << item;

      /* in case of string value get value and convert into string*/
      qWarning() << tr("QJsonObject[appName] of description: ") << item["description"];
      QJsonValue subobj = item["description"];
      qWarning() << subobj.toString();

      /* in case of array get array and convert into string*/
      qWarning() << tr("QJsonObject[appName] of value: ") << item["imp"];
      QJsonArray test = item["imp"].toArray();
      qWarning() << test[1].toString();
   }

输出值

QJsonValue(object, QJsonObject({"description": "Home","imp": ["awesome","best","good"],"message": "YouTube"}) ) 
"QJsonObject of description: " QJsonObject({"description": "Home","imp": ["awesome","best","good"],"message": "YouTube"}) 
"QJsonObject[appName] of description: " QJsonValue(string, "Home") 
"Home" 
"QJsonObject[appName] of value: " QJsonValue(array, QJsonArray(["awesome","best","good"]) ) 
"best"

示例:从字符串读取json

将json分配给字符串,如下所示,并使用readJson()前面显示的功能

val =   
'  {
       "appDesc": {
          "description": "SomeDescription",
          "message": "SomeMessage"
       },
       "appName": {
          "description": "Home",
          "message": "Welcome",
          "imp":["awesome","best","good"]
       }
    }';

输出值

QJsonValue(object, QJsonObject({"description": "Home","imp": ["awesome","best","good"],"message": "YouTube"}) ) 
"QJsonObject of description: " QJsonObject({"description": "Home","imp": ["awesome","best","good"],"message": "YouTube"}) 
"QJsonObject[appName] of description: " QJsonValue(string, "Home") 
"Home" 
"QJsonObject[appName] of value: " QJsonValue(array, QJsonArray(["awesome","best","good"]) ) 
"best"


 类似资料:
  • 问题内容: 我正在尝试从文本文件中读取UTF8文本,然后将其中一些打印到另一个文件中。我正在使用Linux和gcc编译器。这是我正在使用的代码: 目前,它适用于英文字符。 问题答案: 这段代码对我有用:

  • 问题内容: 我在文件中有以下JSON : 如何使用PHP 添加到文件中? 这是我到目前为止的内容: 这给了我一个致命错误:无法在此行上将stdClass类型的对象用作数组: 我正在使用PHP5.2。有什么想法吗?谢谢! 问题答案: 错误消息中的线索是-如果您查看文档以了解它可能需要第二个参数,该参数控制返回数组还是对象-它默认为object。 因此,将您的通话更改为 并且它将返回一个关联数组,您的

  • 我正在尝试获取一个文件()并创建该文件的副本(),该副本只对行进行编号。我现在的代码没有打印错误,但它给了我以下信息: <_io.textiowrapper name='mydata.out'mode='w'encoding='utf-8'> 如果将替换为,它就可以满足我的需要。我做错了什么?

  • 问题内容: 我想通过获取从EditText输入的文本来将文件保存到内部存储中。然后,我希望同一个文件以字符串形式返回输入的文本,并将其保存到另一个字符串中,以备后用。 这是代码: 我提供了一些评论,以帮助你进一步分析我要在哪里完成操作/使用变量的观点。 问题答案: 希望这对你有用。 写文件: 读取文件:

  • 问题内容: 我必须阅读tomcat日志文件,并在一段时间(例如:一个小时)后再次读取该文件(仅针对新添加的内容),因此我创建了RandomAccessFile来记录我完成的最后一个位置并使用BufferedReader.readLine()方法。 但是,我发现有时我无法读取文件的整行。 例如,tomcat正在尝试编写以下内容(仅作为示例): 192.168.0.0本地主机/index.html .

  • 有Java开发人员的库,有大量的方法在Android上不起作用。 我开始使用像OpenCSV这样的库,但不幸的是,Excel已经知道了打开CSV文件的问题。 然后我试着用: ApachePOI——它的方法肯定太多了 JExcelAPI——它可以工作,但只在旧的二进制文件上工作。xls文件 docx4j——还是太多JAR了,因为它基于JAXB,而Android中不包括JAXB 我的问题是,如何在中创