def valid_json

bend-schema-lib@0.4.1.0 · core.bend:176

import bend-schema-lib@0.4.1.0/core.bend as Core
import Base

176# A value is valid when every number in it is finite. Whether a name repeats
177# in an object is not checked: RFC 8259 only says names should be unique, a
178# host's object cannot hold a name twice, and checking it would cost every
179# member a scan of the members after it.
180def valid_json(value: Json) -> Bool:
181  match value:
182    case JNull{}:
183      True{}
184    case JBool{value}:
185      True{}
186    case JNumber{bits}:
187      finite_number(bits)
188    case JString{text}:
189      True{}
190    case JArray{Nil{}}:
191      True{}
192    case JArray{head <> tail}:
193      Bool.and(valid_json(head), valid_json(JArray{tail}))
194    case JObject{Nil{}}:
195      True{}
196    case JObject{JMember{key, val} <> tail}:
197      Bool.and(valid_json(val), valid_json(JObject{tail}))

Uses (6)

Used by (4)