【问题标题】:JSON representation of the following nested data以下嵌套数据的 JSON 表示
【发布时间】:2017-04-23 23:40:38
【问题描述】:

我正在编写代码来根据自然过程生成的数据凭经验确定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 模型中的数据?

【问题讨论】:

    标签: python json fsm


    【解决方案1】:

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

    {
        "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>
    ...
    

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 2015-12-21
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2021-06-24
      相关资源
      最近更新 更多