PyQt中缺少QJsonArray

时间:2018-07-26 17:01:56

标签: python json qt pyqt5

可能是因为列表可以很好地处理其他任务,所以不需要此类。现在这段代码:

def append_message_file(self, messages):
    """Adds new messages to a file"""
    history = QFile('soul.json')
    if history.open(QIODevice.ReadOnly):
        document = QJsonDocument().fromJson(history.readAll())
        array = document.array()
        history.close()
    else:
        array = []
    for index in range(len(messages['user'])):
        value = QJsonValue(messages['user'][index] + ': ' + messages['message'][index])
        array.append(value.toString())
    document = QJsonDocument(array)
    if history.open(QIODevice.ReadOnly):
        history.write(document.toJson(QJsonDocument.Indented))
        history.close()


messages = { 'user': [], 'message': [] }
messages['user'].append('asw')
messages['message'].append('How are you?')
self.append_message_file(messages)

现在soul.json:

[
    "asw: Hi!"
]

上面的代码必须做一个简单的事情:从JSON格式的``历史''文件信息中获取信息,将其添加到``文档''中,然后将一个或多个值添加到此文档的数组中并将其写入到一个文件。 没有QJsonDocument,一切都很好。但是,如果我在多行上有消息,那么仅编写不带引号的消息是不够的。当开始使用此类时,似乎什么也不会发生。

但是,第一个问题是PyQt5.QtCore模块中缺少QJsonArray。然后我将QJsonValue的值添加到普通列表中,然后添加到QJsonDocument中。但这仅在文件中没有数据的情况下有效。如果是这样,则会弹出“分段错误”错误。

有什么方法可以消除这种情况,或者总体上讲关于保护的想法吗?

0 个答案:

没有答案