-
-
Save avuserow/3805b294df824b0f9cb2bf2df98f3e31 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!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