Categories

Checkio.ORG

Subscribe to Posts

Email:

  • 13Oct

    Бомбезное название придумал!

    Проблема. У меня в таблице в 2х полях лежить жсон. А в ответ на запрос пользователю я должен вернуть другой дсон, некоторыми ключами которого будут жсоны из наших полей.

    Решение в лоп – загрузится с этих полей данные и использовать их в формировании жсона. Но получается дурная работа

    1. return json.dumps({
    2.     'user_id':request.user.id
    3.     'user_data':request.user.data(),
    4.     'info_1':json.loads(model_obj.info1),
    5.     'info_2':json.loads(model_obj.info2)
    6. })

    тут получается мы гоняем данные из жсона и обратно в холостую. Я тут наклепал небольшой модулик с использованием json чтоб этого не делать

    1. import json
    2. loads = json.loads
    3.  
    4. class JSONotEncode(object):
    5.     def __init__(self,data):
    6.         self.str = data
    7.  
    8. def simple(data):
    9.     return JSONotEncode(data)
    10.  
    11. class JSONEncoderSimple(json.JSONEncoder):
    12.     def _iterencode(self,obj,*args,**kwargs):
    13.         if isinstance(obj, JSONotEncode):
    14.             return obj.str
    15.         return json.JSONEncoder._iterencode(self,obj,*args,**kwargs)
    16.  
    17. def dumps(data):
    18.     return json.dumps(data,cls=JSONEncoderSimple)
    19.  
    20. def loads(data):
    21.     return json.loads(data)
    22.  
    23. if __name__ == '__main__':
    24.     print dumps({'a':1,'b':'sdr','c':simple('{"v":1}')})

    Как видите, теперь данные, которые и так JSON просто оборачиваем в функцию simple и холостого хода не происходит.

    Share and Enjoy:
    • Facebook
    • LinkedIn
    • Twitter
    • del.icio.us
    • StumbleUpon
    • MySpace
    • Reddit
    • Digg
    • Google Bookmarks
    • Technorati
    • email
    • Print
    • Sphinn
    • Mixx
    • Blogplay
    • Add to favorites
    • Linkter
    • Live
    • MSN Reporter
    • NewsVine
    • RSS
    • Yahoo! Bookmarks
    • Yahoo! Buzz
    • Yigg
    Rating 3.00 out of 5
    [?]

    Posted by Oduvan @ 3:00 pm

    Tags: ,

  • bryukh

    JSONotEncode - Это JSON Not Encode? Не сразу это понял )
    А так, хороший маневр, пропускать строку в сквозную.

  • bryukh

    В чем фишка этого маневра-дублирования?
    loads = json.loads

    def loads(data):
        return json.loads(data)

  • oduvan

    похоже, опчатка

blog comments powered by Disqus