<p>首先,并非所有类型都可以用于JSON键</p>
<blockquote>
<p>Keys must be strings, and values must be a valid JSON data type (string, number, object, array, Boolean or null).</p>
</blockquote>
<p>有关更多信息,请查看<a href="https://www.w3schools.com/js/js_json_objects.asp" rel="nofollow noreferrer">this</a></p>
<p>现在,作为可行的解决方案,我建议您实现两个函数,将元组转换为字符串,并将字符串转换为元组。下面提供了一个非常简单的示例:</p>
<pre><code>import json
data = { ('analogInput', 18) : [('objectName','AI8-Voltage'),
('presentValue',238.3),
('units','Volts')],
('analogInput', 3) : [('objectName','AI3-Pulse'),
('presentValue',100),
('units','Amp')]
}
def tuple_to_str(t):
# It can be implemeneted with more options
return str(t[0])+'_'+str(t[1])
def str_to_tuple(s):
l =s.split('_')
# Your first (second) item is int
l[1] = int(l[1])
return tuple(l)
if __name__=="__main__":
# create a space for a dict of data with string keys
s_data= dict()
for key in data:
s_data[tuple_to_str(key)] = data[key]
x = json.dumps(s_data)
# create a space to load the json with string keys
raw_data = json.loads(x)
final_data = dict()
for key in raw_data:
final_data[str_to_tuple(key)] = raw_data[key]
# Ture
print(final_data)
</code></pre>