以下嵌套数据

时间:2016-12-08 16:35:05

标签: python json fsm

我正在编写代码,以根据经验确定自然过程生成的数据中的state transition table。我想从数据中导出状态,然后将状态数据保存到HD,以便稍后查询。

根据我迄今为止所做的分析,状态信息是嵌套的,并且系统具有N(为简单而固定在N = 3)不同的状态。此外,这N个状态中的每一个都具有固定(可变数量)的嵌套状态。

这是我到目前为止提出的(伪YAML)模式:

machine-state:
    frequency_1: state-info
    frequency_2: state-info
    frequency_3: state-info

state-info: 
    classification_1:
        - classification_1_state_foo
        - classification_1_state_foobar
        - classification_1_state_foofoo
        - classification_1_state_foofoobar
        - classification_1_state_foobarfoo

    classification_2:
        - classification_2_state_name1
        - classification_2_state_name2
        - classification_2_state_name3
        - classification_2_state_name4

    classification_3:
        - classification_3_state_anothername
        - classification_3_state_anothername1
        - classification_3_state_anothername2
        - classification_3_state_anothername3

似乎状态机的各种分类(classification_ *)可以来自ABC。但是,我不确定如何用JSON表示这个树结构,以便进行简单的查询等。

我正在使用Python,并打算将JSON文档存储在PostgreSQL数据库中作为后端 - 所以我可以查询JSON文档,因此我可以根据存储的数据从经验上构建状态转换表。

我的问题是,考虑到我试图建模的问题(以及上面的示例YAML) - 我怎样才能最好地表示JSON模型中的数据?

1 个答案:

答案 0 :(得分:0)

我没有看到比最直观的表现更好的东西:

{
    "classification1": [
        "classification_1_state_foo",
        "classification_1_state_foobar",
        "classification_1_state_foofoo",
        ...
    ],
    "classification2": [
    ...
}

然而,正如我们所说的树结构,也许JSON不是这里的最佳选择。如果我建议对您的方法进行彻底改变,您可以考虑使用XML构建此数据,将XML数据保存在文件中并使用BeautifulSoup进行查询。例如:

<classification>
    <classification_state>classification_1_state_foo</classification_state>
    <classification_state>classification_1_state_foobar</classification_state>
    <classification_state>classification_1_state_foofoo</classification_state>
    ...
</classification>
...