设置JSON数据
本模块包只包含一个单独的组件DashJsonGrid
。以下最小范例展示了如何上手使用该组件:
- 代码
- 结果
minimal_example.py
import dash
import dash_json_grid as djg
app = dash.Dash("demo")
app.layout = djg.DashJsonGrid(
data=1
)
if __name__ == "__main__":
app.run()
Dash应用应当呈现出以下结果:
1 | 1 |
数据整理
只需简单修改DashJsonGrid
的参数data
,即可观察到以下效果:
- 代码
- 结果
...
app.layout = djg.DashJsonGrid(
data=[1]
)
...
Dash应用应当呈现出以下结果:
1 | 1 |
可以确认,相比上面的最小范例,此处的结果并未有任何变化。这是因为,所有传入data
、却又不属于序列(Sequence
)抑或映射(Mapping
)的字面量,都会被自动转换成一个只含单元素的序 列。换言之,data=1
会被隐式整理为data=[1]
。
提示
Dash 不会自动将一个定制的类序列化(serialize)。因此,如果data
的结构中需要包含了定制类型的数据,建议将这些数据转换成str
类型。
渲染一个序列
下例修改了data
参数,并渲染了一个序列。
- 代码
- 结果
...
app.layout = djg.DashJsonGrid(
data=[1, 2.0, "3", None, True]
)
...
Dash应用应当呈现出以下结果:
1 | 1 |
2 | 2 |
3 | 3 |
4 | null |
5 | true |
包含字面量或没有固定结构值的序列、会被渲染成纵向展开的列表。其中第一列显示序列下标、第二列显示序列的值。
渲染一个映射
下例修改了data
参数,并渲染了一个映射。
- 代码
- 结果
...
app.layout = djg.DashJsonGrid(
data={"key1": 1, "key2": "str", "key3": True, "key4": None}
)
...
Dash应用应当呈现出以下结果:
key1 | 1 |
key2 | str |
key3 | true |
key4 | null |
不属于表格成员的映射、会被渲染成纵向展开的列表。其中第一行代表映射关键字,第二行代表映射的值。
渲染一张表格
下例修改了data
参数,并渲染了一张表格。
- 代码
- 结果
...
app.layout = djg.DashJsonGrid(
data=[
{"key1": 1, "key2": "str"},
{"key1": True, "key2": None},
{"key1": 3.0},
{"key1": False, "key2": None, "key3": 4.0},
{"key5": "?"},
]
)
...
Dash应用应当呈现出以下结果:
key1 | key2 | key3 | key5 | |
---|---|---|---|---|
1 | 1 | str | undefined | undefined |
2 | true | null | undefined | undefined |
3 | 3 | undefined | undefined | undefined |
4 | false | null | 4 | undefined |
5 | undefined | undefined | undefined | ? |
当检查到一个序列(Sequence
)所有的成员都是映射(Mapping
)类型时,该序列会被渲染成一张表格,而非将序列本身渲染成带下标的列表的同时、将序列成员渲染成关键字列表。
表格的下标、对应了序列的下标。而表格的列名,对应的是序列中所有成员关键字的并集(union
)。设若某行的数据中不存在某个关键字,对应的值将会被标记为未定义(undefined
)。