Skip to content

Instantly share code, notes, and snippets.

@avuserow
Created October 26, 2016 18:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save avuserow/3805b294df824b0f9cb2bf2df98f3e31 to your computer and use it in GitHub Desktop.
Save avuserow/3805b294df824b0f9cb2bf2df98f3e31 to your computer and use it in GitHub Desktop.
Perl JSON SHOULD_HAVE_FAILED n_array_extra_comma.json
Perl JSON IMPLEMENTATION_PASS i_number_neg_int_huge_exp.json
Perl JSON SHOULD_HAVE_FAILED n_array_number_and_comma.json
Perl JSON IMPLEMENTATION_FAIL i_string_incomplete_surrogate_pair.json
Perl JSON IMPLEMENTATION_PASS i_string_not_in_unicode_range.json
Perl JSON IMPLEMENTATION_FAIL i_string_1st_valid_surrogate_2nd_invalid.json
Perl JSON IMPLEMENTATION_FAIL i_string_incomplete_surrogate_and_escape_valid.json
Perl JSON IMPLEMENTATION_FAIL i_string_lone_second_surrogate.json
Perl JSON IMPLEMENTATION_FAIL i_string_inverted_surrogates_U+1D11E.json
Perl JSON IMPLEMENTATION_PASS i_string_unicode_U+FFFE_nonchar.json
Perl JSON SHOULD_HAVE_FAILED n_number_then_00.json
Perl JSON SHOULD_HAVE_FAILED n_object_trailing_comma.json
Perl JSON IMPLEMENTATION_PASS i_number_pos_double_huge_exp.json
Perl JSON IMPLEMENTATION_FAIL i_string_UTF-16_invalid_surrogate.json
Perl JSON IMPLEMENTATION_FAIL i_object_key_lone_2nd_surrogate.json
Perl JSON SHOULD_HAVE_PASSED y_string_utf16.json
Perl JSON SHOULD_HAVE_PASSED y_object_with_newlines.json
Perl JSON SHOULD_HAVE_PASSED y_structure_lonely_null.json
Perl JSON IMPLEMENTATION_FAIL i_string_truncated-utf-8.json
Perl JSON IMPLEMENTATION_FAIL i_string_UTF-8_invalid_sequence.json
Perl JSON IMPLEMENTATION_FAIL i_string_UTF-16_invalid_lonely_surrogate.json
Perl JSON SHOULD_HAVE_PASSED y_array_with_1_and_newline.json
Perl JSON IMPLEMENTATION_FAIL i_structure_UTF-8_BOM_empty_object.json
Perl JSON SHOULD_HAVE_FAILED n_string_UTF8_surrogate_U+D800.json
Perl JSON IMPLEMENTATION_PASS i_string_unicode_U+FDD0_nonchar.json
Perl JSON IMPLEMENTATION_PASS i_string_unicode_U+10FFFE_nonchar.json
Perl JSON SHOULD_HAVE_FAILED n_string_unescaped_tab.json
Perl JSON SHOULD_HAVE_PASSED y_structure_string_empty.json
Perl JSON IMPLEMENTATION_FAIL i_string_1st_surrogate_but_2nd_missing.json
Perl JSON IMPLEMENTATION_PASS i_string_unicode_U+1FFFE_nonchar.json
Perl JSON IMPLEMENTATION_PASS i_structure_500_nested_arrays.json
Perl JSON IMPLEMENTATION_FAIL i_string_incomplete_surrogates_escape_valid.json
Perl JSON::XS IMPLEMENTATION_PASS i_number_neg_int_huge_exp.json
Perl JSON::XS SHOULD_HAVE_FAILED n_array_unclosed_with_new_lines.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_incomplete_surrogate_pair.json
Perl JSON::XS IMPLEMENTATION_PASS i_string_not_in_unicode_range.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_1st_valid_surrogate_2nd_invalid.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_incomplete_surrogate_and_escape_valid.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_lone_second_surrogate.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_inverted_surrogates_U+1D11E.json
Perl JSON::XS IMPLEMENTATION_PASS i_string_unicode_U+FFFE_nonchar.json
Perl JSON::XS SHOULD_HAVE_FAILED n_number_then_00.json
Perl JSON::XS IMPLEMENTATION_PASS i_number_pos_double_huge_exp.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_UTF-16_invalid_surrogate.json
Perl JSON::XS IMPLEMENTATION_FAIL i_object_key_lone_2nd_surrogate.json
Perl JSON::XS SHOULD_HAVE_PASSED y_string_utf16.json
Perl JSON::XS SHOULD_HAVE_PASSED y_object_with_newlines.json
Perl JSON::XS SHOULD_HAVE_PASSED y_structure_lonely_null.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_truncated-utf-8.json
Perl JSON::XS SHOULD_HAVE_PASSED y_string_space.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_UTF-8_invalid_sequence.json
Perl JSON::XS SHOULD_HAVE_FAILED n_array_newlines_unclosed.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_UTF-16_invalid_lonely_surrogate.json
Perl JSON::XS SHOULD_HAVE_PASSED y_array_with_1_and_newline.json
Perl JSON::XS IMPLEMENTATION_FAIL i_structure_UTF-8_BOM_empty_object.json
Perl JSON::XS SHOULD_HAVE_FAILED n_string_UTF8_surrogate_U+D800.json
Perl JSON::XS IMPLEMENTATION_PASS i_string_unicode_U+FDD0_nonchar.json
Perl JSON::XS IMPLEMENTATION_PASS i_string_unicode_U+10FFFE_nonchar.json
Perl JSON::XS SHOULD_HAVE_PASSED y_structure_string_empty.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_1st_surrogate_but_2nd_missing.json
Perl JSON::XS SHOULD_HAVE_PASSED y_structure_lonely_string.json
Perl JSON::XS IMPLEMENTATION_PASS i_string_unicode_U+1FFFE_nonchar.json
Perl JSON::XS SHOULD_HAVE_PASSED y_structure_lonely_false.json
Perl JSON::XS IMPLEMENTATION_PASS i_structure_500_nested_arrays.json
Perl JSON::XS IMPLEMENTATION_FAIL i_string_incomplete_surrogates_escape_valid.json
Perl6 JSON::Tiny IMPLEMENTATION_PASS i_number_neg_int_huge_exp.json
Perl6 JSON::Tiny SHOULD_HAVE_PASSED y_string_u+2028_line_sep.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_incomplete_surrogate_pair.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_not_in_unicode_range.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_1st_valid_surrogate_2nd_invalid.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_incomplete_surrogate_and_escape_valid.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_lone_second_surrogate.json
Perl6 JSON::Tiny SHOULD_HAVE_FAILED n_structure_whitespace_formfeed.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_inverted_surrogates_U+1D11E.json
Perl6 JSON::Tiny SHOULD_HAVE_FAILED n_string_unescaped_crtl_char.json
Perl6 JSON::Tiny IMPLEMENTATION_PASS i_string_unicode_U+FFFE_nonchar.json
Perl6 JSON::Tiny IMPLEMENTATION_PASS i_number_pos_double_huge_exp.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_UTF-16_invalid_surrogate.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_object_key_lone_2nd_surrogate.json
Perl6 JSON::Tiny SHOULD_HAVE_PASSED y_string_utf16.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_truncated-utf-8.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_UTF-8_invalid_sequence.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_UTF-16_invalid_lonely_surrogate.json
Perl6 JSON::Tiny IMPLEMENTATION_PASS i_structure_UTF-8_BOM_empty_object.json
Perl6 JSON::Tiny TIMEOUT n_structure_open_array_object.json
Perl6 JSON::Tiny IMPLEMENTATION_PASS i_string_unicode_U+FDD0_nonchar.json
Perl6 JSON::Tiny IMPLEMENTATION_PASS i_string_unicode_U+10FFFE_nonchar.json
Perl6 JSON::Tiny SHOULD_HAVE_PASSED y_string_u+2029_par_sep.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_1st_surrogate_but_2nd_missing.json
Perl6 JSON::Tiny IMPLEMENTATION_PASS i_string_unicode_U+1FFFE_nonchar.json
Perl6 JSON::Tiny CRASH n_structure_100000_opening_arrays.json
Perl6 JSON::Tiny IMPLEMENTATION_PASS i_structure_500_nested_arrays.json
Perl6 JSON::Tiny IMPLEMENTATION_FAIL i_string_incomplete_surrogates_escape_valid.json
<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE>JSON Parsing Tests</TITLE>
<LINK rel="stylesheet" type="text/css" href="style.css">
<META charset="UTF-8">
</HEAD>
<BODY>
<H1>JSON Parsing Tests</H1>
<P>Appendix to: seriot.ch <A HREF="http://www.seriot.ch/parsing_json.php">Parsing JSON is a Minefield</A> http://www.seriot.ch/parsing_json.php</P>
<PRE>2016-10-26 11:53:46</PRE>
<H4>Contents</H4>
<OL>
<LI><A HREF="#color_scheme">Color Scheme</A>
<LI><A HREF="#all_results">Full Results</A>
<LI><A HREF="#results_by_parser">Results by Parser</A><UL>
<LI><A HREF="#0">Perl JSON</A>
<LI><A HREF="#1">Perl JSON::XS</A>
<LI><A HREF="#2">Perl6 JSON::Tiny</A>
</OL>
<A NAME="color_scheme"></A>
<H4>1. Color scheme:</H4>
<TABLE>
<TR><TD class="EXPECTED_RESULT">expected result</TD><TR>
<TR><TD class="SHOULD_HAVE_PASSED">parsing should have succeeded but failed</TD><TR>
<TR><TD class="SHOULD_HAVE_FAILED">parsing should have failed but succeeded</TD><TR>
<TR><TD class="IMPLEMENTATION_PASS">result undefined, parsing succeeded</TD><TR>
<TR><TD class="IMPLEMENTATION_FAIL">result undefined, parsing failed</TD><TR>
<TR><TD class="CRASH">parser crashed</TD><TR>
<TR><TD class="TIMEOUT">timeout</TD><TR>
</TABLE>
<A NAME="all_results"></A>
<H4>2. Full Results</H4>
<TABLE>
<TR>
<TH></TH>
<TH class="vertical"><DIV>Perl JSON</DIV></TH>
<TH class="vertical"><DIV>Perl JSON::XS</DIV></TH>
<TH class="vertical"><DIV>Perl6 JSON::Tiny</DIV></TH>
<TH></TH>
</TR>
<TR>
<TD>n_structure_100000_opening_arrays.json</TD> <TD class="EXPECTED_RESULT"></TD> <TD class="EXPECTED_RESULT"></TD> <TD class="CRASH"></TD> <TD>[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[(...)</TD> </TR> <TR>
<TD>i_object_key_lone_2nd_surrogate.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>{"\uDFAA":0}</TD> </TR> <TR>
<TD>i_string_1st_surrogate_but_2nd_missing.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["\uDADA"]</TD> </TR> <TR>
<TD>i_string_1st_valid_surrogate_2nd_invalid.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["\uD888\u1234"]</TD> </TR> <TR>
<TD>i_string_UTF-16_invalid_lonely_surrogate.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["\ud800"]</TD> </TR> <TR>
<TD>i_string_UTF-16_invalid_surrogate.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["\ud800abc"]</TD> </TR> <TR>
<TD>i_string_UTF-8_invalid_sequence.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["<U>E6</U><U>97</U><U>A5</U><U>D1</U><U>88</U><U>FA</U>"] <=> ["日ш"]</TD> </TR> <TR>
<TD>i_string_incomplete_surrogate_and_escape_valid.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["\uD800\n"]</TD> </TR> <TR>
<TD>i_string_incomplete_surrogate_pair.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["\uDd1ea"]</TD> </TR> <TR>
<TD>i_string_incomplete_surrogates_escape_valid.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["\uD800\uD800\n"]</TD> </TR> <TR>
<TD>i_string_inverted_surrogates_U+1D11E.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["\uDd1e\uD834"]</TD> </TR> <TR>
<TD>i_string_lone_second_surrogate.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["\uDFAA"]</TD> </TR> <TR>
<TD>i_string_truncated-utf-8.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["<U>E0</U><U>FF</U>"] <=> [""]</TD> </TR> <TR>
<TD>i_structure_UTF-8_BOM_empty_object.json</TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD><U>EF</U><U>BB</U><U>BF</U>{} <=> {}</TD> </TR> <TR>
<TD>i_string_not_in_unicode_range.json</TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_FAIL"></TD> <TD>["<U>F4</U><U>BF</U><U>BF</U><U>BF</U>"] <=> [""]</TD> </TR> <TR>
<TD>i_number_neg_int_huge_exp.json</TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD>[-1e+9999]</TD> </TR> <TR>
<TD>i_number_pos_double_huge_exp.json</TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD>[1.5e+9999]</TD> </TR> <TR>
<TD>i_string_unicode_U+10FFFE_nonchar.json</TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD>["\uDBFF\uDFFE"]</TD> </TR> <TR>
<TD>i_string_unicode_U+1FFFE_nonchar.json</TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD>["\uD83F\uDFFE"]</TD> </TR> <TR>
<TD>i_string_unicode_U+FDD0_nonchar.json</TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD>["\uFDD0"]</TD> </TR> <TR>
<TD>i_string_unicode_U+FFFE_nonchar.json</TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD>["\uFFFE"]</TD> </TR> <TR>
<TD>i_structure_500_nested_arrays.json</TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD class="IMPLEMENTATION_PASS"></TD> <TD>[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[(...)</TD> </TR> <TR>
<TD>n_array_extra_comma.json</TD> <TD class="SHOULD_HAVE_FAILED"></TD> <TD class="EXPECTED_RESULT"></TD> <TD class="EXPECTED_RESULT"></TD> <TD>["",]</TD> </TR> <TR>
<TD>n_array_number_and_comma.json</TD> <TD class="SHOULD_HAVE_FAILED"></TD> <TD class="EXPECTED_RESULT"></TD> <TD class="EXPECTED_RESULT"></TD> <TD>[1,]</TD> </TR> <TR>
<TD>n_object_trailing_comma.json</TD> <TD class="SHOULD_HAVE_FAILED"></TD> <TD class="EXPECTED_RESULT"></TD> <TD class="EXPECTED_RESULT"></TD> <TD>{"id":0,}</TD> </TR> <TR>
<TD>n_string_unescaped_tab.json</TD> <TD class="SHOULD_HAVE_FAILED"></TD> <TD class="EXPECTED_RESULT"></TD> <TD class="EXPECTED_RESULT"></TD> <TD>["<U>09</U>"] <=> [" "]</TD> </TR> <TR>
<TD>n_number_then_00.json</TD> <TD class="SHOULD_HAVE_FAILED"></TD> <TD class="SHOULD_HAVE_FAILED"></TD> <TD class="EXPECTED_RESULT"></TD> <TD>1<U>00</U> <=> 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment