【问题标题】:append an array to a json python将数组附加到 json python
【发布时间】:2018-05-29 00:37:42
【问题描述】:

我在 python3 上处理 JSON,我想将一个数组附加到一个 json 对象中,这是我目前的代码:

values = [20.8, 21.2, 22.4] 
timeStamps = ["2013/25/11 12:23:20", "2013/25/11 12:25:20", "2013/25/11 12:28:20"] 

myJSON = '{ Gateway: {"serial":"1001", "status":"ok"},
 "Tag":{"TID":"FF01", "EPC":"EE01"},
 "DataSet":{"sensorType":"temperature", "values":[], "timeStamps":[] } }'

是否有任何简单的方法可以附加数组而不必将它们转换为字符串并作为纯文本插入?

提前致谢,

【问题讨论】:

标签: python arrays json


【解决方案1】:

Python 通过 json 模块包含 SimpleJSON。使用它从 JSON 字符串和 python dicts 序列化/反序列化:

myJSON_d = json.loads(myJSON)

myJSON_d.['DataSet'].update({'values': values, 'timeStamps': timeStamps})

myJSON = json.dumps(myJSON_d)

【讨论】:

    【解决方案2】:

    您可以使用 json.loads 解析 JSON,进行操作,然后通过 json.dumps 转换回 JSON。

    请注意,我必须编辑您的 JSON 以使其有效。 (“网关”缺少封闭的双引号。)

    import json
    
    values = [20.8, 21.2, 22.4] 
    timeStamps = ["2013/25/11 12:23:20", "2013/25/11 12:25:20", "2013/25/11 12:28:20"] 
    
    myJSON = '{ "Gateway": {"serial":"1001", "status":"ok"}, "Tag":{"TID":"FF01", "EPC":"EE01"}, "DataSet":{"sensorType":"temperature", "values":[], "timeStamps":[] } }'
    
    o = json.loads(myJSON)
    o["DataSet"]["values"] = values
    o["DataSet"]["timeStamps"] = timeStamps
    
    newJSON = json.dumps(o)
    
    print(newJSON)
    
    # Output:
    # {"Gateway": {"serial": "1001", "status": "ok"}, "Tag": {"TID": "FF01", "EPC": "EE01"}, "DataSet": {"sensorType": "temperature", "values": [20.8, 21.2, 22.4], "timeStamps": ["2013/25/11 12:23:20", "2013/25/11 12:25:20", "2013/25/11 12:28:20"]}}
    

    【讨论】:

      【解决方案3】:

      看起来您也在尝试构建 json。在这种情况下,您应该这样做:

      import json
      
      values = [20.8, 21.2, 22.4] 
      timeStamps = ["2013/25/11 12:23:20", "2013/25/11 12:25:20", "2013/25/11 12:28:20"] 
      
      d = dict(Gateway= dict(serial="1001", status="ok"),
           Tag= dict(TID="FF01", EPC= "EE01"),
           DataSet= dict(sensorType="temperature",values=values,timeStamps=timeStamps))
      
      print(json.dumps(d,indent =2))
      

      返回:

      {
        "DataSet": {
          "timeStamps": [
            "2013/25/11 12:23:20",
            "2013/25/11 12:25:20",
            "2013/25/11 12:28:20"
          ],
          "values": [
            20.8,
            21.2,
            22.4
          ],
          "sensorType": "temperature"
        },
        "Tag": {
          "TID": "FF01",
          "EPC": "EE01"
        },
        "Gateway": {
          "serial": "1001",
          "status": "ok"
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-16
        • 2020-12-03
        • 2017-08-18
        • 2018-12-20
        • 1970-01-01
        相关资源
        最近更新 更多