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}).Более подробную документацию и примеры можно увидеть на странице проекта.
