Skip to content

JSON操作

sqala支持SQL标准的JSON操作,但目前没有支持PostgreSQL和MySQL的->等运算符,如果有需求,请参考自定义表达式

IS JSON

isJson方法用于判断字段是否为有效的JSON格式:

scala
val q = query:
    from(Post).filter(p => p.content.isJson)

JSON

json方法用于将字符串类型表达式转换为JSON表达式:

scala
val q = query:
    from(Post).map(p => json(p.content))

JSON_VALUE

jsonValue方法用于提取一个JSON PATH对应的表达式,并转为字符串类型,类似与PostgreSQL的->>运算符:

scala
val q = query:
    from(Post).map(p => jsonValue(p.content, "$.a"))

JSON_QUERY

jsonQuery方法用于提取一个JSON PATH对应的表达式,并转为JSON类型,类似与PostgreSQL的->运算符:

scala
val q = query:
    from(Post).map(p => jsonQuery(p.content, "$.a"))

JSON_EXISTS

jsonExists方法用于检测JSON PATH是否存在:

scala
val q = query:
    from(Post).filter(p => jsonExists(p.content, "$.a"))

JSON_OBJECT

jsonObject用于构建一个JSON对象:

scala
val q = query:
    from(Post).map(p => jsonObject("id" value p.id, "title" value p.title))

JSON_ARRAY

jsonArray用于构建一个JSON数组:

scala
val q = query:
    from(Post).map(p => jsonArray(p.id, p.title))

JSON_OBJECTAGG

jsonObjectAgg用于将数据聚合成JSON对象:

scala
val q = query:
    from(Post).map(p => jsonObjectAgg(p.id, p.title))

JSON_ARRAYAGG

jsonArrayAgg用于将数据聚合成JSON数组:

scala
val q = query:
    from(Post).map(p => jsonArrayAgg(p.title))