1

我正在尝试使用 json2html 将 json 数据格式化为 html。json 数据如下所示:

json_obj = [{"Agent Status": "status1", "Last backup": "", "hostId": 1234567, "hostfqdn": "test1.example.com", "username": "user1"}, {"Agent Status": "status2", "Last backup": "", "hostId": 2345678, "hostfqdn": "test2.example.com", "username": "user2"}]

正如帖子“ json2html not a valid json list python ”中已经报道的那样,要使代码正常工作, json 参数必须是字典而不是列表,所以我这样称呼它:

json_obj_in_html = json2html.convert(json = { "data" : json_obj })

但是,它不会将 json 数据格式化为 html 仅第一级字典 {“data”:json_obj }:

print json_obj_in_html
<table border="1"><tr><th>data</th><td>[{"Agent Status": "status1", "Last backup": "", "hostId": 1234567, "hostfqdn": "test1.example.com", "username": "user1"}, {"Agent Status": "status2", "Last backup": "", "hostId": 2345678, "hostfqdn": "test2.example.com", "username": "user2"}]</td></tr></table>

请注意,在线转换工具提供了正确的输出:http: //json2html.varunmalhotra.xyz/

<table border="1"><tr><th>data</th><td><ul><table border="1"><tr><th>Agent Status</th><td>status1</td></tr><tr><th>Last backup</th><td></td></tr><tr><th>hostId</th><td>1234567</td></tr><tr><th>hostfqdn</th><td>test1.example.com</td></tr><tr><th>username</th><td>user1</td></tr></table><table border="1"><tr><th>Agent Status</th><td>status2</td></tr><tr><th>Last backup</th><td></td></tr><tr><th>hostId</th><td>2345678</td></tr><tr><th>hostfqdn</th><td>test2.example.com</td></tr><tr><th>username</th><td>user2</td></tr></table></ul></td></tr></table>

任何帮助都会非常受欢迎。

4

2 回答 2

1

确保这json_obj是一个对象数组而不是字符串 ( str)。

我把你的代码放到一个完整的示例中:

from json2html import *
json_obj = [{"Agent Status": "status1", "Last backup": "", "hostId": 1234567, "hostfqdn": "test1.example.com", "username": "user1"}, {"Agent Status": "status2", "Last backup": "", "hostId": 2345678, "hostfqdn": "test2.example.com", "username": "user2"}]
json_obj_in_html = json2html.convert(json = { "data" : json_obj })
print json_obj_in_html

使用Python 2.7json2html 1.0.1这会导致以下结果: 在此处输入图像描述

如果您收到类似的结果

<table border="1"><tr><th>data</th><td>[{"Agent Status": "sta...

这很可能json_obj是一个str而不是一个对象数组。您可以通过插入如下语句来检查这一点

print type(json_obj)

之前jsonhtml.convert。我假设在您的情况下type(json_obj)返回 a <type 'str'>,这就是 JSON 之类的字符串出现在您的 html 中的原因。为了让它正确,你必须以type(json_obj)返回的方式修改你的代码<type 'list'>

于 2016-10-03T13:34:45.007 回答
0

我的字典列表anomaly_list已经是 json 格式,因此尝试将其转换json.dumps(anomaly_list, sort_keys=True)为字符串,这不是我想要的。我通过保留我的字典列表原样解决了这个问题,这段代码现在可以工作了:

json_obj_in_html = ''
for j in anomalies_list:
    json_obj_in_html += json2html.convert(json = j)

它输出我想要的。

@gus42:谢谢,您的反馈让我明白了真正的铅在哪里。

于 2016-10-04T14:51:29.527 回答