DevTools

JSON検証ツール

Ali Hub DevToolsでJSON検証ツールを使用できます。入力確認、結果、プライバシー情報、文書化された制限を明確に示します。

主な入力

保存領域は、ツールがブラウザー内のローカルでバージョン管理され、範囲が限定され、消去可能で、機密でないデータを明示した場合にのみ使用されます。

このツールをインストール

すぐに使えるよう、このツールを端末に追加します。

JSON検証ツール

入力したテキストが標準 JSON 構文に従っているかを確認し、エラーの原因を理解します。

データを使う前に JSON を確認

引用符、カンマ、または括弧が一つ欠けるだけで、API、設定、build step が停止することがあります。この validator は source text を JSON として parse し、構文エラーを後続の application validation から分離するために使います。

ここでいう validation は、入力された text を一つの JSON value として parse できるかを調べることです。parse が成功しても、required field、business rule、JSON Schema が正しいとは限りません。

payload が複数の service を通るとき、先に syntax を確認すると debugging の範囲を小さくできます。quote、comma、escape、nesting を確認してから、project 固有の schema と domain check を行ってください。

request body、fixture、export した設定、configuration snippet の確認に利用できます。test copy から token、password、個人情報を削除し、組織の privacy policy に従って入力を扱ってください。

構文とデータの意味は別です

標準 JSON には object、array、string、number、true、false、null があります。property name と string は double quote で囲み、member は comma で分け、bracket は正しい順序で閉じます。comment と trailing comma は標準 JSON grammar の一部ではありません。

validator が答えるのは「source を一つの JSON value として parse できるか」です。source の修正、code の実行、API call、application にとっての意味の判定は行いません。schema と domain の検証は別にしてください。

whitespace は読みやすさのために通常許可されますが、string 内の character は data です。production consumer と同じ parser のルールで escape sequence、newline、Unicode、encoding を確認してください。

JSON document が valid でも、transport が valid とは限りません。HTTP header、content type、authentication、compression、size limit は別の layer の問題です。

JSON を検証する手順

  1. source field に完全な JSON value を貼り付けます。comment、code fence、programming language の wrapper は test copy から外します。
  2. validator を実行し、status と diagnostic を読みます。marker の character だけでなく、その前後の token も確認してください。原因は少し前にあることが多いです。
  3. reject されたら quote、comma、bracket、escape、nesting を確認します。大きな document は小さな部分に分け、失敗する section を見つけてから再検証します。
  4. syntax が通った後で、project の schema、type、required property、range、permission、business rule を確認します。これらを syntax result と同じ意味で報告しないでください。
  5. original payload と redacted copy を分けて保存します。secret を public example、screenshot、URL に入れないでください。
  6. 最後に、実際の consumer と同じ parser と encoding で integration test を行います。言語や library が違うと duplicate key と number precision の扱いが変わる場合があります。

検証方法

  • grammar を読む

    validator は token、quote、delimiter、nesting の規則を使い、source 全体を一つの JSON value として parse します。

  • 結果を示す

    Valid は parsing が完了したことを示します。Failure は source が理解できる syntax と一致しないことを示します。

  • 後続チェックを分ける

    schema、range、permission、domain は semantic check です。別のルールと evidence が必要です。

tool が exact line number や error message を記録していない場合、推測して書かないでください。必要なら実際の runtime で再確認します。

結果を読む

Valid は text が JSON syntax として受け入れられたことを示します。次に value を見て schema と application validation を実行します。

Invalid は parsing が停止したことを示します。指定位置の前後の character を確認し、marker だけを変更しないでください。

syntax が valid でも request が失敗する場合は content type、endpoint、authentication、schema、business rule を確認します。syntax success は network success と同じではありません。

message が一般的なら input を小さくして failing section を探します。一つの property を追加または削除した結果は調査の手掛かりであり、すべての parser の共通 policy ではありません。

よくある間違い

single quote、comment、trailing comma を含む JavaScript をそのまま貼り付けるのはよくある間違いです。標準 JSON に変換してください。

valid result を schema validation だと思うのは誤りです。required field、range、permission は別に確認します。

error marker の場所だけ修正しても、前にある quote または comma の不足が原因なら解決しません。

JSON を Python dictionary、YAML、JavaScript object と同一視しないでください。documented JSON grammar を使います。

clipboard は smart quote や hidden control character を含むことがあります。結果が異なる場合は plain text editor で source を確認してください。

制限

documented input は一つの JSON text field です。JSON Schema、business rule、file processing、すべての parser edge case をサポートすると証明するものではありません。

duplicate key、非常に大きな number、document size、encoding は必要に応じて別 test を行います。library により policy が変わります。

checker は悪意ある payload を安全にはしません。server には size と nesting の limit、resource limit、security review が必要です。

production runtime、library version、error policy は別途記録してください。このページの一般的な結果がその証拠を置き換えることはありません。

Examples

単純な object を受け入れる

この基本 object は valid JSON ですか?

完全な object を送ります。

double quote の name、string、boolean が valid な object structure を作っています。

quote のない名前を拒否

unquoted property name が invalid なのはなぜですか?

source を送り failure を確認します。

標準 JSON の member name は double quote で囲んだ string でなければなりません。

nested data を受け入れる

object の中に object の array を置けますか?

nested value を一つの document として送ります。

array、object、number、comma、bracket が valid な JSON structure になっています。

trailing comma を拒否

最後の member の後ろに comma があるとどうなりますか?

trailing comma のある object を送ります。

標準 JSON では trailing comma は許可されません。削除してもう一度確認します。

null を使う

null は valid JSON value ですか?

object を送り status を読みます。

null は標準 JSON value です。application での意味は contract が決めます。

bracket の不足を拒否

opening bracket を必ず閉じるのはなぜですか?

balanced でない structure を送ります。

array は [ で開きましたが ] で閉じていません。data を使う前に nesting を直します。

Frequently asked questions

valid JSON は application data の valid を意味しますか?

いいえ。text を parse できるという意味だけです。required field、type、range、status、business rule は別に検証します。

validator は source を自動修正しますか?

checker として使ってください。source を自分で直し、diff を保存してから確認済み copy を再送します。

comment は許可されますか?

標準 JSON では許可されません。comment が必要なら別の source format に残し、build step で strict JSON を生成して検証します。

single quote が拒否される理由は?

標準 JSON の名前と string は double quote を使います。JavaScript object は手動で quote を置き換えず JSON serializer で変換します。

この tool は JSON Schema を確認しますか?

確認しません。正しい schema と draft version の schema validator を使い、syntax result とは別に記録してください。

top-level value を array にできますか?

JSON は array を top-level value にできます。ただし endpoint が object を要求する場合があるため contract は別に test します。

duplicate key は必ず拒否されますか?

共通の policy はありません。parser が最初または最後を残す場合、error にする場合があります。duplicate name を避け、実際の consumer で確認します。

validation が通った後に何をしますか?

schema、permission、range、integration test を実行します。content type、encoding、size、timeout、logging を確認し、redacted payload を staging で試します。

References