новости сообщество форум вики полезно

jsx — потоковый JSON-парсер

30/07/2010 16:41

jsx — это порт потокового JSON-парсера yajl (Yet Another JSON Library) на Erlang. Парсер полностью соответствует EEP 0018.

Пример работы (используется Twitter JSON API):

%% {"talentdeficit", "use jsx!", "Fri Jul 30 04:25:50 +0000 2010"} = tweet_to_tuple(...).

tweet_to_tuple(Tweet) ->
    P = jsx:parser(),
    scan(P(Tweet), {name, text, time}).

scan({event, {key, "screen_name"}, Next}, Acc) ->
    collect_name(Next(), Acc);
scan({event, {key, "created_at"}, Next}, Acc) ->
    collect_time(Next(), Acc);
scan({event, {key, "text"}, Next}, Acc) ->
    collect_text(Next(), Acc);
scan({event, end_json, Next}, Acc) ->
    Acc;
scan({_, _, Next}, Acc) ->
    scan(Next(), Acc).

collect_name({event, {string, Name}, Next}, {_, Text, Time}) ->
    scan(Next(), {Name, Text, Time}).
collect_time({event, {string, Time}, Next}, {Name, Text, _}) ->
    scan(Next(), {Name, Text, Time}).
collect_text({event, {string, Text}, Next}, {Name, _, Time}) ->
    scan(Next(), {Name, Text, Time}).

Более подробную документацию и примеры можно увидеть на странице проекта.


 
 
 
 

так же

Ссылки

Сюда ссылаются

сообщество

http://groups.google.com/group/erlang-russian/feed/rss_v2_0_msgs.xml