【解決方法】JSON でコメントを作成するにはどうすればよいですか?

[ad_1]

カスタム ポリシーを作成しており (認定資格の勉強中)、JSON コード ブロック内にコメントを作成しようとしていました。

ご協力をいただければ幸いです。 ありがとう!

コメントに関して AWS がスローしたエラーに関する情報はほとんどないため、これは私が調査を行った後に試みたものです。

1. これは、AWS の例として使用されるコード ブロックです。
————————————————– ———–

{
   "Version": "2012-10-17",
   "Statement": [
   {
      "Effect": "Allow",
      "Action": "support:*",
      "Resource": "*"
   },
   {
       "Effect": "Deny",
       "Action": "support:ResolveCase",
       "Resource": "*"
    }]
}

2. これは、JSON コメントを含む変更されたコードです (エラーがスローされました)。
————————————————– ————————

{
    "__comment1__": "Custom policy to specify what actions to allow or deny.",
    "__comment2__": "The following policy statement allows an IAM user to perform",
    "__comment3__": "all actions in AWS Support except resolve a case.",
    "Version": "2012-10-17",
   "Statement": [
   {
      "Effect": "Allow",
      "Action": "support:*",
      "Resource": "*"
   },
   {
       "Effect": "Deny",
       "Action": "support:ResolveCase",
       "Resource": "*"
    }]
}

AWS がスローしたエラーは次のとおりです。

Ln 2, Col 20Invalid Policy Element: The policy element __comment1__ is not valid.

私が試したこと:

FreeCodeCamp の記事に従ってコメントを追加しようとしましたが、そのときに AWS がエラーをスローしました。

JSON コメントの例 — JSON ファイルにコメントする方法[^]

解決策 2

JSON はデータ交換形式であり、コメントは JSON 構文の一部ではありません。 JSON パーサーはそれらを考慮せず、データのみを解析します。 したがって、コメントは正式にはサポートされていませんが、YAML などのコメントをサポートする非 JSON 形式を使用して、それを JSON に変換するなどの代替手段を使用できます。

ただし、次のようなカスタム要素として JSON ファイル内のコメントを使用することはできます。

JSON
{
  "name": "John",
  "age": 30,
  "comments": "This is a sample comment"
}

解決策 1

JSON にはコメントのようなものはありません。 これはデータ形式の仕様であり、コードではありません。

その「コメント」が実際に解析可能かどうかは、データのロードに使用される JSON パーサー実装によって異なります。 リンクした例の場合、ファイルのロードには Python の JSON パーサーが使用されています。 このパーサーは、「_comment」を実際のコメントとして認識しません。 これは、結果として得られるデータ オブジェクト内の単なる別の文字列としてロードされます。

一部のパーサーはこれのロードをサポートしますが、どのパーサーもコメントをデータの一部として扱うことに注意してください。 無視されることはありません。

他の実装では、データを逆シリアル化するためにクラスを定義する必要があります。 ターゲット クラスでフィールドが見つからない JSON ファイル内のデータをパーサーが無視しない場合、現在発生しているようなエラーが発生する可能性があります。

解決策 3

ここで他の人が述べたように、これは仕様の一部ではありません。 ただし、計画されたサポートがあるかどうかを監視できるリクエストが提起されています。 [System.Text.Json] プロパティに関するコメントをシリアル化する機能を追加 · 問題 #35251 · dotnet/runtime · GitHub[^]。

解決策 4

引用:

Ln 2、Col 20 無効なポリシー要素: ポリシー要素 __comment1__ 有効じゃない。

これは、呼び出しているサービスによって生成されたエラーです。 これは、特定のことを強制していることを示します。 JSONスキーマ[^]つまり、新しい未知の要素を単純にドキュメントに追加することはできません。

呼び出しているサービスに提供されているスキーマを調べて、コメント用のフィールドが提供されているかどうかを確認する必要があります。 そうしないと、JSON ペイロードにコメントを含めることができません。

[ad_2]

コメント

タイトルとURLをコピーしました