現在、私のアプリは次の方法で JSON を解析しています。
OpenStruct.new(JSON.parse(json_string))
しかし、このアプローチには問題があります。
- JSON では、次のようなルートレベルの配列が許可されますが
[{id: 1, name: "first"}, {id: 2, name: "second"}]
、OpenStruct ではそれらを処理して例外をスローすることはできません。 - OpenStruct はネストされた要素を処理しません。
RecursiveOpenStruct などのソリューションをいくつか見つけました。
- ネストされたハッシュを処理しますが、それでもトップレベルの配列を処理できません
- 配列にネストされたハッシュはハッシュのままです。
{data: [{id: 1, name: "first"}, {id: 2, name: "second"}]}
ここで.data[i]
は、それぞれがハッシュです。