改名で同じ名前が重なる
a を c に改名すると、すでにある c と重なってしまう境界の例です。重なりを警告し、どちらの値も失わずに出力へ残すことを確かめます。
入力
JSON
{"a":1,"c":2}改名の規則(1 行に「旧い名前=新しい名前」)
a=c
ケース変換(規則に当たらないキーに適用)
変換しない
字下げ
空白 2 つ
結果
エラー 0 件・警告 1 件・情報 1 件
指摘(エラー・警告・情報)
- 警告 $ 改名の結果、「a」「c」がすべて「c」になり、同じオブジェクトに同じ名前が重なります。RFC 8259 4 節では名前は一意であるべきで、重なると読み取り側の挙動が予測できません。出力には両方を残しています。規則を見直してください。
- 情報 出力 値の文字列は変更していません。整数だけの名前(例: "1")は、読み込みの都合で他の名前より先に並び替わることがあります。
| キーの総数 | 2 個 |
|---|---|
| 改名したキー | 1 個 |
| 名前が重なった箇所 | 1 件 |
改名した JSON
{
"c": 1,
"c": 2
}検算(この結果になる理由)
a は規則で c になり、もとの c と同じオブジェクトで「c」が 2 つになります。RFC 8259 4 節では名前は一意であるべきなので警告が 1 件出ます。値 1 と 2 はどちらも消さず、出力に並べて残します。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- 入力の JSON に最初から同じキーが重なっている場合、標準の読み込みでは最後の値だけが残ります。重複の確認には重複キーの検査を別に使ってください。
- 整数だけの名前("1" など)は、読み込みの都合で他の名前より先に並び替わることがあります。キーの順序が意味を持つデータでは出力を確認してください。
- 値の文字列や数値は変えません。キーの名前だけが対象で、値の中の文字列は改名されません。
- 規則は完全一致だけです。部分一致や正規表現による置換には対応していません。
ご利用にあたって
- 改名した JSON を受け取る側のプログラムが、新しいキーの名前に対応しているか確認してから使ってください。