在python json.dumps(array)中取消转义单个Unicode字符的干净方法?

时间:2018-11-16 00:02:08

标签: python json string unicode escaping

我需要将一些数据发送到我不拥有或操作的服务器上。数据必须通过HTTP POST以form参数发送。密钥必须是“ logs”,并且值必须是JSON数组。此数组的每个元素都是CSV字符串,由IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridRow}}}"/> Ctrl-A(文字字符为 not )的 unicode表示形式分隔。

当我通过\u0001将CSV字符串数组转换为JSON数组时,它隐式转义了某些字符(例如json.dumps)。

问题:"还隐式转义了我的CSV分隔符json.dumps,将其更改为\u0001,这导致服务器拒绝了我的数据。要解决此问题,我手动“取消”转义它:\\u0001

问题:使用此变通办法有潜在的影响吗?我有没有更优雅的方式来解决这个问题?

s.replace('\\\\u0001', '\\u0001')

注意:python 2.7

1 个答案:

答案 0 :(得分:0)

只需在列表中使用unicode字符串,就不要逃脱unicode

logs2 = [u'VAL1\u0001{"key":"VAL2"}', u'VAL1\u0001{"key":"VAL2"}'] 
serialized_logs2 = json.dumps(logs2)

应该做正确的事情,您可以通过以下方式进行验证

print(serialized_logs2 == serialized_logs.replace("\\\\u0001","\\u0001"))

(其中serialized_logs是您上方的json.dumps结果)

请参阅:https://repl.it/@JoranBeasley/SoreGrimQuotient(python2)