JSON API查询语言

作者: Lupino | 来源:发表于2018-11-07 07:46 被阅读55次

在使用 JSON api 的时候,经常会遇见一些蛋疼的事情,我只要获取一些数据就可以,但 API 确给我所有的数据。于是我把 graphql 给集成进去,我可以获得我想要的字段,但我还是没办法进行预处理。

在某一天我看到了 Functional sed for JSON, 它可以让我写一些函数来处理 json 的数据,而这些函数都是安全的。于是我豁然开朗,如果把它集成到 JSON api 上面就可以解决我的痛点。

import Data.Aeson (Value)
import Web.Scotty (ActionM, rescue, param)

checkSed :: Value -> ActionM Value
checkSed j = do
  inp <- param "jl" `rescue` (""::String)
  if null inp then return j
  else
    case parseText "" (pack inp) of
      Left err -> do
        liftIO $ print err
        return j
      Right expr0 -> do
        let expr = ApplicationExpression expr0 (valueToExpression j)
        let core = eval (foldl (\e (v, f) -> subst v f e) (desugar expr) (M.toList scope))
        return $ coreToValue core

然后在每个 json 输出数据的时候加上 checkSed 就可以 jl 进行处理数据。

modify "content" (\o->{blocks: map (modify "entityRanges" (filter (\r-> o.entityMap[showInt r.key].type /= "ASR-const"))) o.blocks, entityMap: filterWithKey (\k v -> v.type /= "ASR-const") o.entityMap})

参考:Helper.hs#L155

相关文章

  • JSON API查询语言

    在使用 JSON api 的时候,经常会遇见一些蛋疼的事情,我只要获取一些数据就可以,但 API 确给我所有的数据...

  • 当下最流行的API查询语言GraphQL-再不用你就out了

    一种用于 API 的查询语言 GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 G...

  • 【GraphQL 极速指南】基础篇

    一种用于 API 的查询语言:GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 G...

  • Elasticsearch入门(三)

    介绍查询语言 Elasticsearch提供一种JSON风格的特定领域语言,利用它你可以执行查询。这杯称为查询DS...

  • GraphQL学习,Java简单实现

    简介 是一种查询语言,类似前端与后端之间通过sql语言进行交互。用类似json的语言来查询需要的数据。如在以下查询...

  • JPA支持的查询语言

    JPA支持两种表达的查询方式:查询语言和条件API查询语言:采用JPQL写成的String,作为createQue...

  • GraphQL — API查询语言

    API,AJAX,REST,后端分离,前端三大框架,在单页应用成为主流的今天,基本上无人不知。相比起传统的MVC架...

  • graphql-java 使用

    GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API ...

  • GraphQL

    GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API ...

  • graphql之node

    GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API ...

网友评论

    本文标题:JSON API查询语言

    本文链接:https://www.haomeiwen.com/subject/dnhmxqtx.html