2010-10-13 7 views
8

में टुपल सूची में मेरे पास tuples की एक सूची है जो http शीर्षलेख हैं। मैं सूची को एक JSON ऑब्जेक्ट में कनवर्ट करना चाहता हूं। मैं mochijson2 कोशिश करता हूं लेकिन कोई फायदा नहीं हुआ।एरलांग: JSON

[{'Accept',"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}, 
{'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"}, 
{'Accept-Encoding',"gzip,deflate"}, 
{'Accept-Language',"en-us,en;q=0.5"}, 
{'Cache-Control',"max-age=0"}, 
{'Connection',"close"}, 
{'Cookie',"uid=CsDbk0y1bKEzLAOzAwZUAg=="}, 
{'User-Agent',"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10"}] 

और यह (एक द्विआधारी JSON स्ट्रिंग) चाहते हैं:

तो मैं निम्नलिखित है

<<"{\"Accept\":\"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\", 
\"Accept-Charset\":\"ISO-8859-1,utf-8;q=0.7,*;q=0.7\", 
\"Accept-Encoding\":\"gzip,deflate\", 
\"Accept-Language\":\"en-us,en;q=0.5\", 
\"Cache-Control\":\"max-age=0\", 
\"Connection\":\"close\", 
\"Cookie\":\"uid=CsDbk0y1bKEzLAOzAwZUAg==\", 
\"User-Agent\":\"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10\"}">> 

और मैं यह कोशिश जहां एक tuples के मूल सूची है:

list_to_binary(mochijson2:encode(A)). 

मैं मैं इसे किसी ऐसे स्वरूप mochijson2 बेहतर व्याख्या कर सकते हैं में प्राप्त करने की आवश्यकता पर शक। और फिर बाइनरी में कनवर्ट करें। या तारों के रूप में प्रतिनिधित्व किए गए सभी पात्रों को रखने का एक तरीका जानें (कुछ पूर्णांक की सूची के रूप में)।

अगर आप मुझे कुछ नमूना कोड के साथ सही दिशा में इंगित कर सकते हैं तो बहुत सराहना की।

उत्तर

7

आप से पहले द्विआधारी में वहाँ के अंदर उन तार बदलने की आवश्यकता आप एनकोडर को भेजें। मोचिजसन 2 एन्कोडर इसे पूर्णांक की सूची के रूप में मानता है और इसे एक सरणी के रूप में आउटपुट करता है। तो mochijson2 की जरूरत है आप {'key', <<"val">>}

में {'key', "val"} कन्वर्ट करने के लिए अपने कोड में इस प्रयास करें: Funs का उपयोग कर आप चाहें तो

Original = [ 
    {'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"}, 
    {'Accept-Encoding',"gzip,deflate"} 
]. 
StingConverted = [ {X,list_to_binary(Y)} || {X,Y} <- Original ]. 
Output = mochijson2:encode(StingConverted). 
io:format("This is correct: ~s~n", [Output]). 

या:

Original = [ 
    {'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"}, 
    {'Accept-Encoding',"gzip,deflate"} 
]. 
ConvertFun = fun({X,Y}) -> {X,list_to_binary(Y)} end. 
StingConverted = lists:map(ConvertFun, Original). 
Output = mochijson2:encode(StingConverted). 
io:format("This is correct: ~s~n", [Output]). 
+0

धन्यवाद जॉन! यही वही है जो मैं ढूंढ रहा था। सूची समझ ठीक है और मेरी व्यक्तिगत वरीयता है। –

0

निर्माण पूरी तरह से। जेसन में नेस्टेड टुपल सूची के बारे में कैसे? मैंने कोड संशोधित किया और कोशिश की लेकिन असफल रहा। यह मेरे पास वर्तमान में है। धन्यवाद

Nested Tuples List 
------------------ 
Original = [ 
    {'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"}, 
    {'Accept-Encoding',"gzip,deflate"}, 
    {'Nested-List', [ 
    {'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"}, 
    {'Accept-Encoding',"gzip,deflate"} 
    ]}], 

ConvertFun = fun({X,Y}) -> {X, case is_list(Y) of 
    true -> 
     Elem = lists:nth(1,Y), 
     case is_tuple(Elem) of 
      true -> 
       demo_json(Y); 
      false -> 
       list_to_binary(Y) 
     end; 
    false -> 
     Y 
end. 
} end, 
StingConverted = lists:map(ConvertFun, Original), 
Output = mochijson2:encode(StingConverted), 
io:format("This is correct: ~s~n", [Output]).