gpt4 book ai didi

python - 如何在没有转义序列的情况下取回与 fileInfo 一起存储的正确 json?

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:06 27 4
gpt4 key购买 nike

我无法检索存储在 Maya 的 fileInfo 中的精确 JSON 字符串转储 (json.dumps)。

>>> import pymel.core as pc
>>> json.dumps({'foo': 123})
'{"foo": 123}'
>>> pc.fileInfo['foo'] = json.dumps({'foo': 123})
>>> pc.fileInfo['foo']
u'{\\"foo\\": 123}'
>>> json.loads(pc.fileInfo['foo']) # this produces an error because of the escape sequence
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\Program Files\Autodesk\Maya2011\bin\python26.zip\json\__init__.py", line 307, in loads

File "c:\Program Files\Autodesk\Maya2011\bin\python26.zip\json\decoder.py", line 319, in decode
File "c:\Program Files\Autodesk\Maya2011\bin\python26.zip\json\decoder.py", line 336, in raw_decode
File "c:\Program Files\Autodesk\Maya2011\bin\python26.zip\json\scanner.py", line 55, in iterscan
File "c:\Program Files\Autodesk\Maya2011\bin\python26.zip\json\decoder.py", line 171, in JSONObject
ValueError: Expecting property name: line 1 column 1 (char 1)

问题是当 Maya 存储一个值时,它确保它被正确转义。但是当检索到此字符串时,它的 json.loads 格式错误。我该如何解决这个问题?

我主要寻找的是取消转义 MEL 在保存值时引入的转义序列?到目前为止,我还没有找到任何可以做到这一点的东西。

MEL 与 C 有很多相似之处,因此转义序列与上面演示的 C 的转义序列基本相同。

最佳答案

@theodox 的回答可能是正确的。但是如果知道json串会被转义。您可以简单地取回字符串的原始未转义版本。

mystring.decode('unicode_escape')

所以在上述情况下,反序列化存储信息的正确方法是:

json.loads(pc.fileInfo['foo'].decode('unicode_escape'))

虽然它看起来有点丑,所以你可以把它放在一个函数中。

def safe_json_loads(str):
return json.loads(str.decode('unicode_escape'))


data = safe_json_loads(pc.fileInfo['foo'])

干杯,

关于python - 如何在没有转义序列的情况下取回与 fileInfo 一起存储的正确 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22728285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com