2013-05-31 2 views
0

Я пытаюсь JSON кодировать следующий dict. Но в этом случае message, который фактически является unicode character DEVANAGARI LETTER.Escape backslash в кодировке JSON python

Итак, при кодировании этого dict в объект json он, похоже, сбрасывает обратную косую черту («\») с двумя обратными косыми чертами («\») в message.

Как изменить это только один обратной косой черты «\» после кодирования его json.dumps()

Я использую следующую custom encoder, чтобы encode в 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 
}] 
+0

Передача 'ensure_ascii' вариант, как ложно' dumps' будет заставить его работать так, как вы хотите, хотя я не уверен, будет ли это вызвать другие части вашего кода сломаться. Но, возможно, стоит попытаться понять, действительно ли это решает вашу проблему. См. [Docs here] (http://docs.python.org/2/library/json.html#basic-usage) – naiquevin

+0

Nope secure_ascii не повлиял. –

+0

попробуйте указать значение 'message' как unicode – naiquevin

ответ

1

Используйте unicode буквальный так, чтобы последовательность \u побега понимается вместо того, чтобы компилятор думает, вы имеете в виду \\u.

u'\u092e.... 
+0

Пожалуйста, проверьте обновленный вопрос. –

+0

... О, да. А также? –

+0

Я имею в виду, я включил пользовательский кодировщик, который пытается конвертировать его в unicode, но он по-прежнему не может его игнорировать. –