如何在qtextbox中显示json数据

时间:2016-12-21 04:56:33

标签: python pyside

例如,我从文件中读取了这个json数据:

{"name": "Gilbert", "wins": [["straight", "7"], ["one pair", "10"]]}

如何在带有格式化缩进的编辑文本框中显示它

{  
   "name":"Gilbert",
   "wins":[  
      [  
         "straight",
         "7"
      ],
      [  
         "one pair",
         "10"
      ]
   ]
}

3 个答案:

答案 0 :(得分:2)

您可以使用json.dumps()并将结果放入文本框中来完成此操作。

一个简单的例子(没有pyside):

import json
s = """{"name": "Gilbert", "wins": [["straight", "7"], ["one pair", "10"]]}"""
print(json.dumps(j, indent=4, sort_keys=True))

结果:

{
    "name": "Gilbert",
    "wins": [
        [
            "straight",
            "7"
        ],
        [
            "one pair",
            "10"
        ]
    ]
}

如果您将print的结果分配给变量,而不是json.dumps()

p = json.dumps(j, indent=4, sort_keys=True)

现在,您可以使用p setText() slot

将文本框的内容设置为QTextEdit

答案 1 :(得分:2)

使用 json

import json

from PySide.QtGui import QApplication
from PySide.QtGui import QTextEdit

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)

    s = {"name": "Gilbert", "wins": [["straight", "7"], ["one pair", "10"]]}
    js = json.dumps(s, indent=4, sort_keys=True)
    w = QTextEdit()
    w.setText(js)
    w.show()
    sys.exit(app.exec_())

enter image description here

答案 2 :(得分:1)

这不是您指定的精确格式,但具有适当pprint.pformat值的width会生成格式良好的字符串,然后您可以将其插入文本框中:

import pprint
s = pprint.pformat({"name": "Gilbert", "wins": [["straight", "7"], ["one pair", "10"]]},
                   width=25)

结果:

>>> print(s)
{'name': 'Gilbert',
 'wins': [['straight',
           '7'],
          ['one pair',
           '10']]}