我想使用对象的类型作为字典键,最好将这样的字典序列化为JSON字符串。可以反序列化它,然后使用简单的“ if SomeType in SomeDictionary”检查。
演示该问题的最小代码示例:
import json
class Cat():
def __init__(self, name):
self.name = name
class Dog():
def __init__(self, name):
self.name = name
pets = dict()
pets[Cat] = Cat("Tom")
pets[Dog] = Dog("Rex")
print(pets.keys())
print(json.dumps(pets))
我得到了错误:
dict_keys([<class '__main__.Cat'>, <class '__main__.Dog'>])
Traceback (most recent call last):
File "python", line 17, in <module>
TypeError: keys must be a string
第17行表示带有“ print(json.dumps(pets))”的行。
是否可以在Python中实现这种行为?
答案 0 :(得分:1)
您可以尝试以下方法:
try{
JSONArray parametersForPhp = new JSONArray();
JSONObject jsonObject = new JSONObject();
jsonObject.put(key,value);
jsonObject.put(key,value);
parametersForPhp.put(jsonObject);
JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.POST, httpurl, parametersForPhp,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG,response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
RequestQueueSingleton.getInstance(getApplicationContext()).addToRequestQueue(arrayRequest);
}catch(Exception e){
e.printStackTrace();
}
答案 1 :(得分:1)
替代解决方案
pets = {"Tom" : Cat("Tom"), "Rex" : Dog("Rex")}
print(pets.keys())
print(json.dumps(pets))
最后,如果不遍历所有值,就无法说“词典中有猫还是狗”