クォート文字で囲ってないJSONキー

JSONの仕様は、フィールド名:キー は、(") ダブルクォーテーションで囲むと
されているが、RFC8259 にそんなこと書いてあるか?
JavaScript 表記のことを考えると、キーをダブルクォーテーションで囲まないケースで
読込みエラーになるのは、不都合なのではないか?

以下のように書いたJSON この時点でこれはJSONでないという方もいるだろうが、

{
   id : 1207,
   name : "Foo",
   flg : true,
   values : [ 11, 21, 34 ]
}

これを、Java Jackson で普通に読もうとすると、
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('i' (code 105)):
 was expecting double-quote to start field name

となる。
Jackson には、これを回避して読込む方法がある。
ObjectMapper のコンフィグレーションとして、JsonReadFeature.ALLOW_UNQUOTED_FIELD_NAMES を指定する。

ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonReadFeature.ALLOW_UNQUOTED_FIELD_NAMES.mappedFeature(), true);
Map<String, Object> map = mapper.readValue(jsontext, new TypeReference<LinkedHashMap<String, Object>>(){});

では、シングルクォーテーション文字で囲んだ場合はどうだろうか?

{
   'id' : 1207,
   'name' : "Foo",
   'flg' : true,
   'values' : [ 11, 21, 34 ]
}

この場合は、普通の ObjectMapper で読むと
com.fasterxml.jackson.core.JsonParseException: Unexpected character (''' (code 39)):
  was expecting double-quote to start field name

と怒られる。
シングルクォーテーションで囲んだ場合を読み込ませるようにするには、、
JsonReadFeature.ALLOW_SINGLE_QUOTES を指定する。

ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonReadFeature.ALLOW_SINGLE_QUOTES.mappedFeature(), true);
Map<String, Object> map = mapper.readValue(jsontext, new TypeReference<LinkedHashMap<String, Object>>(){});

シングルクォーテーション、ダブルクォーテーション、
囲み文字無しの混在を検証する。

JsonReadFeature.ALLOW_UNQUOTED_FIELD_NAMES を指定した時、

double quote と quote無し が混在 OK
double quote と single quote が混じっている NG

JsonReadFeature.ALLOW_SINGLE_QUOTES を指定した時、

single quote と double quote が混じっている OK
single quote と quote無し が混じっている NG