var yourModels : [YourModel] = []
ref.child("data").observe(.value, with: {
snapshot in
for child in snapshot.children {
let model = YourModel.init(snapshot: (child as? FIRDataSnapshot)!)
self.yourModels.append(model)
}
})
我尝试了两件事
关于使用ast.literal_eval(a)输出格式错误的字符串
使用json.loads(a)或simplejson.loads(a)..输出仍然是
的字符串
我该怎么做..把输出作为字典
答案 0 :(得分:3)
如果您的字符串看起来像"{Po_list:[121,122],product_list:[343,434],site_list:[2,63]}"
,则只需在评估a
之前通过在它们周围添加引号将键转换为字符串:
>>> import re
>>> from ast import literal_eval
>>> a = "{Po_list:[121,122],product_list:[343,434],site_list:[2,63]}"
>>> re.sub('(\w+)(?=:)', '"\g<1>\"', a)
'{"Po_list":[121,122],"product_list":[343,434],"site_list":[2,63]}'
>>> literal_eval(re.sub('(\w+)(?=:)', '"\g<1>\"', a))
{'Po_list': [121, 122], 'product_list': [343, 434], 'site_list': [2, 63]}
答案 1 :(得分:1)
literal_eval
有效。你以某种方式给错了输入..
a = '{"Po_list": [121, 122], "product_list": [343, 434], "site_list": [2, 63]}'
print(type(a)) # prints: <class 'str'>
from ast import literal_eval as leval
res = leval(a)
print(type(res)) # <class 'dict'>
如果我错过了解并且未引用密钥,您应该使用regex
来解决问题;看看@EricDuminil的答案