2017-09-13 22 views
1

これはいつも読んでいたjsonファイルのホモトピーですboost::property_tree::json_parser::read_jsonJSONファイルのread_jsonにコメントが許可されていますか?

そして、それはいつもうまくいきました。

/**********************************************/ 
/*     the title     */ 
/**********************************************/ 



{ 
    "garden": { 
     "side1": { 
      "treeA1": "apple", 
      "treeA2": "orange", 
      "treeA3": "banana", 
     }, 
     "side2": { 
      "treeB1": "orange", 
      "treeB2": "palm", 
      "treeB3": "cherry", 
     } 
    }, 
    "house": "" 
} 

私は1.58.0から1.65.0に私のブーストバージョンをアップグレードし、今私はので、コメントの例外を受け取ります。コメントを削除すると、すべての問題は解決します。

私はどこかで間違いを犯しているのですか、それともブーストの新バージョンでバグですか?

答えて

1

コメントはJSONではありません。

古いパーサーはそれらを持っていましたが、ユニコードを正しくサポートしていませんでした。

ここthe release notes for Boost 1.59.0でのメッセージです:

プロパティツリー:

  • 完全なUnicodeをサポートした新しいJSONパーサーは。
  • 改ざん 変更点:新しいパーサーは、JSONファイルのコメントまたは文字列 の連結をサポートしていません。これらの機能は、旧パーサの非標準の 拡張ですが、その削除により、 が頼りにしていたコードが破損する可能性があります。
0

official JSON standardは、コメント(here's the reason why)の構文を定義していません。

コメントのサポートは、パーサーごとに実装されています(またはサポートされていません)。 Boostはかつては便宜のためにサポートされていましたが、その後コンプライアンスのために削除されました(私はBoostを使わないので推測しています)。

Boostがコメントをサポートしなくなった場合、解析する前にそれらを削除する必要があります。その目的のためにサードパーティの実装がたくさんあります。提案についてはCan comments be used in JSON?を参照してください。

関連する問題