Skip to content

JSON.dump inconsistent output for hash #563

@maniSHarma7575

Description

@maniSHarma7575

Steps to reproduce

require "minitest/autorun"
require "json"


class DumpTest < Minitest::Test
  def test_dump_duplicate_key_hash
    assert_equal "{\"a\":5,\"c\":{\"b\":6}}", JSON.dump({ 'a' => 1,  a: 5, c: { 'b' => 2, b: 6 } })
  end
end

Expected behaviour

Test case should pass

Actual behavior

Run options: --seed 18012

# Running:

F

Failure:
DumpTest#test_dump_duplicate_key_hash [nano-example.rb:7]:
--- expected
+++ actual
@@ -1 +1 @@
-"{\"a\":5,\"c\":{\"b\":6}}"
+"{\"a\":1,\"a\":5,\"c\":{\"b\":2,\"b\":6}}"



bin/rails test nano-example.rb:6



Finished in 0.007499s, 133.3511 runs/s, 133.3511 assertions/s.
1 runs, 1 assertions, 1 failures, 0 errors, 0 skips

System configuration

Ruby version: ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin23], ruby 3.2.0, ruby 2.7.8

Same issue got reported in Rails ActiveSupport encode as well. Check it out here: #50481

cc: @byroot @hsbt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions