最近、JSONを解析するときに壁にぶつかりました。ご覧のとおり、CloudFlareクライアントインターフェイスAPIを使用しているときに、特定のIPの「脅威の評価」を検索したかったのです。問題は、APIの設計により、形式が次のようになることです。
{
response: {
xxx.xxx.xxx.xxx: <value>,
calls_left: 299
},
result: "success",
msg: null
}
xxx.xxx.xxx.xxx
データを取得するために必要なフィールド名を表します。すぐに、私が直面していた問題をおそらく見ることができます。解析文字列のドット文字は、現在のパスのサブレベルであると見なされます。
<value>
IPの実際の評価を表します。ただし、形式とそこから返されるデータ型は異なります。脅威ではない、または脅威の評価がないIPではfalse
、ブール値として返されます。検索エンジンのクローラーでは、文字列として"SE:<var>"
(<var>
は数値)を返します。既知の脅威については、戻ります"BAD:<var>"
(ここ<var>
で、は数値です)。そのため、返される既知のデータ型に依存することはできませんでした。
ただし、主な問題は、このフィールドから値を読み取ろうとすると、フィールド名内のドットが原因で明らかに失敗することです。