Python 用于内部转换的pytransitions json配置

Python 用于内部转换的pytransitions json配置,python,json,transition,Python,Json,Transition,我正在尝试将我的转换状态机转换为使用json存储格式。我的状态机只有一个触发器,因为我希望它在每次触发事件时根据以下说明尝试所有转换: 这是一个具有两种状态的简单状态机,它根据输入变量的值进行转换,该值与“保护”函数的某些阈值进行比较。在转换中使用非json公式,我遵循了内部转换的说明: 下面的代码在我的测试中生成所需的状态机行为。我把这些州包括在内以供参考,尽管它们似乎不是我麻烦的根源 transitions = [ # state to state transitions {

我正在尝试将我的转换状态机转换为使用json存储格式。我的状态机只有一个触发器,因为我希望它在每次触发事件时根据以下说明尝试所有转换: 这是一个具有两种状态的简单状态机,它根据输入变量的值进行转换,该值与“保护”函数的某些阈值进行比较。在转换中使用非json公式,我遵循了内部转换的说明: 下面的代码在我的测试中生成所需的状态机行为。我把这些州包括在内以供参考,尽管它们似乎不是我麻烦的根源

transitions = [
    # state to state transitions
    {"trigger": "check", "source": "on", "dest": "off", "conditions": "on_to_off_guard"},
    {"trigger": "check", "source": "off", "dest": "on", "conditions": "off_to_on_guard"},
    # state internal transitions.
    {"trigger": "check", "source": "on", "dest": None, "after": "on_during_action"},
    {"trigger": "check", "source": "off", "dest": None, "after": "off_during_action"},
]
states = [
    {"name": "on", "on_enter": "on_during_action"}, 
    {"name": "off", "on_enter": "off_during_action"}
    ]
现在,当我尝试将其转换为json格式时,我会按照下面的示例编写以下代码:

但是,这会产生以下错误(windows 10,VSCode,以交互模式运行):

所以我计算出
None
值需要用双引号括起来。所以我试了一下:

json_config = """
{
"name": "MyMachine",
"states": [
    {"name": "on", "on_enter": "on_during_action"},
    {"name": "off", "on_enter": "off_during_action"}
],
"transitions": [
    {"trigger": "check", "source": "on", "dest": "off", "conditions": "on_to_off_guard"},
    {"trigger": "check", "source": "off", "dest": "on", "conditions": "off_to_on_guard"},
    {"trigger": "check", "source": "on", "dest": "None", "after": "on_during_action"},
    {"trigger": "check", "source": "off", "dest": "None", "after": "off_during_action"}
],
"initial": "on"
}
"""
但这会产生以下错误(事后看来我应该预料到):

然后我尝试了单引号,但这会产生与无引号相同的错误。所以现在我被难倒了

是否有合适的方式以转换的json格式定义内部转换?这是我的问题吗 或者过渡是否为此提供了解决方案

如果还有什么我做错了,请也指出。谢谢

在json中使用“null”(不带引号)将转换为“None”。
~\AppData\Local\Programs\Python\Python39\lib\json\decoder.py in raw_decode(self, s, idx)
    353             obj, end = self.scan_once(s, idx)
    354         except StopIteration as err:
--> 355             raise JSONDecodeError("Expecting value", s, err.value) from None
    356         return obj, end
JSONDecodeError: Expecting value: line 11 column 54 (char 430)
json_config = """
{
"name": "MyMachine",
"states": [
    {"name": "on", "on_enter": "on_during_action"},
    {"name": "off", "on_enter": "off_during_action"}
],
"transitions": [
    {"trigger": "check", "source": "on", "dest": "off", "conditions": "on_to_off_guard"},
    {"trigger": "check", "source": "off", "dest": "on", "conditions": "off_to_on_guard"},
    {"trigger": "check", "source": "on", "dest": "None", "after": "on_during_action"},
    {"trigger": "check", "source": "off", "dest": "None", "after": "off_during_action"}
],
"initial": "on"
}
"""
~.\venv\lib\site-packages\transitions\core.py in get_state(self, state)
    732             state = state.name
    733         if state not in self.states:
--> 734             raise ValueError("State '%s' is not a registered state." % state)
    735         return self.states[state]
    736 
ValueError: State 'None' is not a registered state.