سؤال

لدي قائمة من tuples التي هي رؤوس HTTP. أريد تحويل القائمة إلى كائن JSON. أحاول Mochijson2 ولكن دون جدوى.

لذلك لدي ما يلي:

[{'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\"}">>

وأنا أحاول هذا حيث A هي القائمة الأصلية من tuples:

list_to_binary(mochijson2:encode(A)).

أظن أنني بحاجة إلى الحصول على تنسيق يمكن أن يفسر Mochijson2 بشكل أفضل. ثم تحويل إلى ثنائي. أو اكتشف طريقة لجميع الشخصيات التي تمثلها كسلاسل (بدلاً من الحصول على قائمة من الأعداد الصحيحة).

موضع تقدير كبير إذا تمكنت من توجيهني في الاتجاه الصحيح مع بعض رمز العينة.

هل كانت مفيدة؟

المحلول

تحتاج إلى تحويل تلك الأوتار الموجودة في الداخل إلى ثنائي قبل ترسلها إلى المشفر. يعتبر مشفر Mochijson2 هذا مجرد قائمة من الأعداد الصحيحة ويخرجها كصفيف. لذا يحتاجك Mochijson2{'key', "val"} داخل {'key', <<"val">>}

جرب هذا في الكود الخاص بك:

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]).
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top