我正在尝试使用python中的json.loads函数在json字符串下加载。 但是&q;不是有效的json对象。
我有办法删除它吗? 我在下面提供了一个示例:
[{&q;Id&q;:1,&q;Name&q;:&q;Name}]
答案 0 :(得分:1)
尝试用双引号&q;
"
import json
data = '[{&q;Id&q;:1,&q;Name&q;:&q;Name&q;}]'
data = data.replace('&q;', '"')
print(json.loads(data))
[{'Id': 1, 'Name': 'Name'}]
输出
{{1}}
答案 1 :(得分:0)
Angular 对 transfer state 使用特殊的 escapeHtml
函数。您可以找到那些 escapeHtml
/unescapeHtml
函数 here:
export function escapeHtml(text: string): string {
const escapedText: {[k: string]: string} = {
'&': '&a;',
'"': '&q;',
'\'': '&s;',
'<': '&l;',
'>': '&g;',
};
return text.replace(/[&"'<>]/g, s => escapedText[s]);
}
export function unescapeHtml(text: string): string {
const unescapedText: {[k: string]: string} = {
'&a;': '&',
'&q;': '"',
'&s;': '\'',
'&l;': '<',
'&g;': '>',
};
return text.replace(/&[^;]+;/g, s => unescapedText[s]);
}
您可以使用以下代码在 python 中重现此转义函数:
import json
unescapedText = {
'&a;': '&',
'&q;': '"',
'&s;': '\'',
'&l;': '<',
'&g;': '>',
}
def unescape(str):
for key, value in unescapedText.items():
str = str.replace(key, value)
return str
state = "[{&q;Id&q;:1,&q;Name&q;:&q;Name&q;}]"
decoded = json.loads(unescape(state))
print(decoded)
repl.it:https://replit.com/@bertrandmartel/AngularTransferStateDecode2