Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON编码python中的转义反斜杠_Python_Escaping_Json - Fatal编程技术网

JSON编码python中的转义反斜杠

JSON编码python中的转义反斜杠,python,escaping,json,Python,Escaping,Json,我试图用JSON编码下面的内容。但在本例中,消息实际上是一个 因此,在将这个dict编码为json对象时,它似乎在消息中用两个反斜杠(\)来逃避反斜杠(\) 在使用json.dumps()对其进行编码后,如何将其更改为仅一个反斜杠“\ 我正在使用下面的自定义编码器,将dict编码为json class MyCustomJsonEncoder(json.JSONEncoder): def encode(self, obj): # the json obj c

我试图用JSON编码下面的内容。但在本例中,
消息实际上是一个

因此,在将这个
dict
编码为json对象时,它似乎在
消息中用两个反斜杠(\)来逃避反斜杠(\)

在使用
json.dumps()对其进行编码后,如何将其更改为仅一个反斜杠“\

我正在使用下面的
自定义编码器
,将dict编码为json

class MyCustomJsonEncoder(json.JSONEncoder):
    def encode(self, obj):
        # the json obj
        count = 0
        for ob in obj:
            obj[count]['message'] = unicode(obj[count]['message']).replace("\\u","\u")
            count += 1
        return super(MyCustomJsonEncoder, self).encode(obj)

[{
    'virality': '4.6%',
    'post_engaged': 150,
    'description': '',
    'post_impressions': 1631,
    'post_story': 75,
    'name': '',
    'source': '',
    'comment_count': 16,
    'link': '',
    'text': '',
    'created_time': '03:10 AM,<br>May 13, 2013',
    'message': '\u092e\u0941\u0930\u0932\u0940 \u0938\u093e\u0930:-     \u0939\u0947 \u092e\u0940\u0920\u0947',
    'id': u'182929845081087_572281819479219',
    'status_type': 'status',
    'likes_count': 55
}]
类MyCustomJsonEncoder(json.JSONEncoder):
def编码(自身、obj):
#json obj
计数=0
对于obj中的ob:
obj[count]['message']=unicode(obj[count]['message'])。替换(“\\u”,“\u”)
计数+=1
返回超级(MyCustomJsonEncoder,self).encode(obj)
[{
“病毒性”:4.6%,
“就业岗位”:150人,
“描述”:“,
“后印象”:1631年,
“后故事”:75,
“姓名”:“,
“来源”:“,
“评论计数”:16,
“链接”:“,
“文本”:“,
“创建时间”:“2013年5月13日凌晨03:10”,
“消息”:“\u092e\u0941\u0930\u0932\u0940\u0938\u093e\u0930:-\u0939\u0947\u092e\u0940\u0920\u0947”,
“id”:u'182929845081087U572281819479219',
“状态类型”:“状态”,
“喜欢”计数:55
}]

使用
unicode
文本,以便理解
\u
转义序列,而不是让编译器认为您的意思是
\\u

u'\u092e....

sure_ascii
选项作为False传递给
dumps
将使其按照您想要的方式工作,尽管我不确定它是否会导致代码的其他部分中断。但也许值得一试,看看它是否真的解决了你的问题。请参见Nope确保ascii无效。尝试将
消息
值指定为unicode如果您只想预处理数据以将值转换为unicode,请尝试类似以下操作
json.dumps([dict((k,unicode(v))表示k,v in x.iteritems())表示x in data],确保ascii=False)
,预处理似乎仍然没有逃过反斜杠“\\”。我的意思是,我已经包括了自定义编码器,它确实尝试将其转换为unicode,但它似乎仍然没有取消它的转换。源代码的问题是
u
id
键的字符串之间有一个空格