2009-12-25 85 views
0

我有一種方法將輸出格式化爲json格式。 我keyword_filter將在此通過這個格式:以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]}]' 

** filter_name將從方法save_fiter_to_JSON傳遞。

聖誕快樂,新年快樂。 ...

+0

嗨python,它不是很清楚我什麼你想要的。所以你知道你可以使用'simplejson'模塊來寫入JSON格式。但是問題是什麼?難道你需要'filter_name'來寫沒有引號的事實嗎? (因爲它被JavaScript解釋爲對象/函數名稱而不是字符串)? – Wim 2009-12-25 09:50:57

+0

是的,事實上,我不使用json,我試圖格式化我的輸入 給json(很容易)。謝謝 – kn3l 2009-12-25 09:55:58

+0

「simplejson模塊寫入JSON格式」很好。非常感謝。 – kn3l 2009-12-25 10:13:28

回答

3

一些提示:

  • 你可以轉換Django的QueryDict對Python的字典,dict(keyword_filter)表達,
  • 您可以到字典中dict(keyword_filter, name=filter_name)表達增加額外的記錄。

然後使用json模塊來轉儲JSON並將其寫入文件。

+0

你的想法=>給我的方式 thanksssss – kn3l 2009-12-25 10:43:49

2

你的問題很難理解。我不確定你需要什麼。這是我解決您的問題的最佳嘗試。

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() 
+0

在我的方法keyword_filter = 將通過。 – kn3l 2009-12-25 10:07:52

+0

謝謝你我從你的代碼中得到了一個主意。 :) :) – kn3l 2009-12-25 10:12:44