【问题标题】:Deserialize json in python to a separate value将python中的json反序列化为单独的值
【发布时间】:2020-08-26 20:20:48
【问题描述】:

我有一个在 MQTT 服务器中发布 json 字符串的 Arduino。 我用python阅读了这个主题并看到了这个:

{"temp1": 123, "vol1": 456, "cur1": 789, "pf1": 321, "p1":654}

如何划分各个部分并将它们分配给稍后在脚本中使用的变量?

es:

temp1 = 123
vol1 = 456

编辑: 我的 json 字符串是这样的:{"temp1":26.44,"vol1":0.00,"cur1":0.04,"pf1":1.00,"p1":4000.00,"s1":0.00,"f1":48.84,"p1max":4000.00,"en1":16.00,"prev_en1":0.00,"m_en1":0.00,"prev_m_en1":0.00}

    pacdata = msg.payload.decode("utf-8")
    print("pacdata= ",str(pacdata))
    my_set = str(pacdata)
    print("my_set= ",my_set)
    my_var = []
    my_var1 = []
    for x,y in my_set.items():
        print (x,'=',y)
        x = y
    print("value temp1: ", my_set['temp1'])

如果我用你的代码写(复制)这个字符串一切正常,如果我使用包含这个字符串的变量,脚本就不起作用...... 为什么?

谢谢!

【问题讨论】:

  • 为什么将它们分配给您可以从字典中访问的变量
  • 在我使用这个变量在显示器中打印之后。我不知道怎么用字典,
  • 你现在卡在哪里了?你试过什么吗?
  • 我尝试了各种在网上查看的方法,但我找不到正确的方法。也许我看起来不正确,因为我找不到任何适合我的东西
  • 请说明您要达到的目标以及您的问题到底是什么。分配给变量和使用字典是 Python 的非常基本的操作。如果您不确定基础知识,请考虑发送Python tutorial

标签: python json serialization


【解决方案1】:

您确实不需要将字典分成不同的部分来将每个部分保留为变量以供以后使用。字典通常是为了这个目的而存在的,键可以用作变量,值可以在需要时用作变量。您只需要以这种方式遍历字典即可随时获得所需:

my_set = {"temp1": 123, "vol1": 456, "cur1": 789, "pf1": 321, "p1":654}
for x,y in my_set.items():
   print (x,'=',y) 

您会注意到,键可以声明为变量并分配给它们的值

【讨论】:

  • 这会将值分配给名称x,而不是分配给“名称”temp1vol1、...最初存储在x 中。
  • 好的,非常感谢!我已经尝试过了,这已经是向前迈出的一大步。如果我想打印一个特定的变量,我该怎么做?例如只打印“pf1”
  • 只写my_set['p1'] and you'll get 654`打印
  • @MisterMiyagi - 感谢您的观察,我已经更正了
  • 哦,这真的很简单,但我永远不会独自到达那里!非常感谢! +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
相关资源
最近更新 更多