✏️
SwiftUI で JSON を表示する View
を作りました。
ファイル1個で完結しているので、Debug Build 時にだけ使えるようにしたら平和になります。Framework にしなかったのは、1ファイルで収まるコードなのでそこまでやるのは過剰かなと考えたためです。アップデートの予定もないし。
http で開始する文字列は URL としてパースを試みます。成功すれば、URL っぽく表示されます。また、長押しで Safari で開くメニューが出ます。
LazyVStack すると壊れがちになるんですが、JSONが巨大だとレンダリングに時間がかかりがちなので、デフォルトでは適当なところで Object / List を閉じています。タップで開けます。
JSONSerialization
JSONSerializationは Integer も Number も Boolean も全部 NSNumber に変換します。いい感じに判定する必要があります。いろいろやり方はあるようですが、こんな感じでやっています。
case let num as NSNumber:
let encoding = String(cString: num.objCType)
if encoding == "d" {
return .num(Double(truncating: num))
}
if encoding == "c" {
return .flag(Bool(exactly: num)!)
}
return .int(Int(truncating: num))
Discussion