http://www.learnpython.org/Serialization_using_JSON_and_pickle
以下是说明:
本练习的目的是打印出带有键值对 "Me" : 800 的 JSON 字符串。
下面是我们应该修改的起始代码。
#Exercise fix this function, so it adds the given name and salary pair to the json it returns
def add_employee(jsonSalaries, name, salary):
# Add your code here
return jsonSalaries
#Test code - shouldn't need to be modified
originalJsonSalaries = '{"Alfred" : 300, "Jane" : 301 }'
newJsonSalaries = add_employee(originalJsonSalaries, "Me", 800)
print(newJsonSalaries)
我完全迷路了。JSON 课程充其量是简短的。我似乎在这里遇到的问题是orginalJsonSalaries
被定义为一个字符串(包含各种不必要的符号,如括号。事实上,我认为如果删除围绕其定义的单引号,originalJsonSalaries
将是一个字典,这将是容易得多。但就目前而言,我怎样才能将"Me"
和附加800
到字符串并仍然保持类似字典的格式?
是的,我对编码非常陌生。我知道的唯一其他语言是 tcl。
编辑:
好的,多亏了答案,我发现我很密集,我写了这段代码:
import json
#Exercise fix this function, so it adds the given name and salary pair to the json it returns
def add_employee(jsonSalaries, name, salary):
# Add your code here
jsonSalaries = json.loads(jsonSalaries)
jsonSalaries["Me"] = 800
return jsonSalaries
#Test code - shouldn't need to be modified
originalJsonSalaries = '{"Alfred" : 300, "Jane" : 301 }'
newJsonSalaries = add_employee(originalJsonSalaries, "Me", 800)
print(newJsonSalaries)
这不起作用。无论出于何种原因,原始字典键被格式化为 unicode(我不知道发生在哪里),所以当我打印出字典时,会显示“u”标志:
{u'Jane': 301, 'Me': 800, u'Alfred': 300}
我曾尝试使用dict.pop()
替换键(dict("Jane") = dict.pop(u"Jane")
),但这只是带来SyntaxError: can't assign to function call
我的原始解决方案是否不正确,或者这是一些烦人的格式问题以及如何解决?