Записать в файл в формате Json? - PullRequest
0 голосов
/ 25 декабря 2009

У меня есть метод для форматирования вывода как JSON. Мой ключевое слово_фильтр будет передан в этом формате:

<QueryDict: {u'customer_type': [u'ABC'], u'tag': [u'2']}>
<QueryDict: {u'customer_type': [u'TDO'], u'tag': [u'3']}>
<QueryDict: {u'customer_type': [u'FRI'], u'tag': [u'2,3']}>

На самом деле это я получил из request.GET (keyword_filter = request.GET)

Это мой метод: (я пытаюсь)

 def save_fiter_to_JSON(self, dest, keyword_filter):
    fwrite  = open(dest, 'a')
    #keyword_filter = <QueryDict: {u'customer_type': [u'FRI'], u'tag': [u'2,3']}>
    string_input1 =string.replace(str(keyword_filter), '<QueryDict:', '["name:"')
    string_input2 = string.replace(string_input1, '>', '')
    fwrite.write(string_input2+",\n")
    fwrite.close()

Все здесь могут мне помочь? Формат JSON, который я хочу.

[
 {"name": filter_name, "customer_type": "ABC", "tag": [2,3]},
]

Или другой хороший формат от вас.

import simplejson as json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'

** имя_фильтра будет передано из метода save_fiter_to_JSON.

С Рождеством и Новым годом. ...

Ответы [ 2 ]

3 голосов
/ 25 декабря 2009

Несколько советов:

  • Вы можете конвертировать QueryDict в django в словарь Python с выражением dict(keyword_filter),
  • Вы можете добавить в словарь дополнительную запись с выражением dict(keyword_filter, name=filter_name).

Затем используйте модуль json, чтобы выгрузить JSON и записать его в файл.

2 голосов
/ 25 декабря 2009

Ваш вопрос сложен для понимания. Я не уверен, что вам нужно. Вот моя лучшая попытка решить вашу проблему.

def save_fiter_to_JSON(self, dest, filter_name, keyword_filter):
    # start with an empty list
    lst = []

    # I don't know where you will get your qd (QueryDict instance)
    # filter something using keyword_filter?  Replace this with actual code
    for qd in ??FILTER_SOMETHING??(keyword_filter):
        # make a mutable copy of the QueryDict
        d = qd.copy()
        # update the copy by adding "name"
        d["name"] = filter_name
        # append dict instance to end of list
        lst.append(d)

    # get a string with JSON encoding the list
    s = json.dumps(lst)

    f = open(dest, 'a')
    f.write(s + "\n")
    f.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...