美文网首页
【erlang】json解析,如何只解析最外一层

【erlang】json解析,如何只解析最外一层

作者: 夏澪 | 来源:发表于2019-05-06 17:15 被阅读0次

前言

erlang 对 json 的解析是有自己的工具的,也就是 jsx,可以在 config 里面引入并使用。但是问题出现了,json 解析的时候,会完全完整地解析全部的结构,而有时候,我们会希望只解析最外层的结构。
举个栗子:

{"key":{"inner_key":"inner_value"}}

解析结果为:

#{<<"key">> => #{<<"inner_key">> => <<"inner_value">>} }

期望结果为:

#{<<"key">> => <<"{\"inner_key\":\"inner_value\"}">> }

实现方案

我在 jsx 本身提供的参数和 jsx 的相关文档中,没有发现能够实现这个操作的方法。这个应该是我的疏漏和能力有限,期待读者补足,我这里就介绍下自己的原始实现方法。

  1. 用处理 binary 的方式,获取 key 值对应的位置
binary:match(<<Key/binary, "\":">>, Data)
  1. 假设值是以中括号开始的,找到配对的中括号,大括号同理。找寻方法是设置记数 count,每找到一个 [{ 则 count + 1,找到一个 }] 则 count - 1, 等到值为0,则代表找到配对的符号。
  2. 考虑特殊情况
{"a":{"apple":{"taste":"deliciouos"}}, "apple":{"taste":"not beautiful"}}

要取 apple 的值,应该是 {"taste":"not beautiful"}, 但上述处理结果会是 {"taste":"deliciouos"}.在这里,用jsx的完全解析的方法,得到结果Map,当你获得数据后进行一次解析并校验一下是否和预定的结果Map一致,一致则代表成功,不一致,则在1的位置后面循环进行12操作。

相关文章

  • 【erlang】json解析,如何只解析最外一层

    前言 erlang 对 json 的解析是有自己的工具的,也就是 jsx,可以在 config 里面引入并使用。但...

  • erlang中json解析

    最近要用erlang写一个接口,功能是银行卡信息验证,这个要接入,第三方的服务提供者,他们的接口要求采用http ...

  • Swift 使用 Codable 解析 JSON

    示例1: JSON Model 解析 JSON 与 Model 完全一致,这是最基础的 JSON 解析。 示例2:...

  • 如何用Retrofit解析Json

    网上如何用Retrofit解析json的文章很多,但是很多都比较零散。比如如何解析复杂json格式?json格式里...

  • Gson解析内嵌map结构

    Gson可以解析map且支持范型,如: 如下代码解析: 但是如果json是这样的呢?如何解析data不是最外层的m...

  • JSON

    JSON解析(反序列化) JSON解析(序列化) JSON解析补充

  • [NewtonSoft.Json] JObject 与 JTok

    引入NewtonSoft.Json; 有时需要动态一层一层解析Json数据,JObject是一个Json对象,但是...

  • JSON解析数据

    JsonObject解析 和JSonArray解析: JSON创建和JSON解析: 一。效果图: 创建: 解析: ...

  • Json解析方式

    1.传统的JSON解析 1.1 生成Json 1.2 解析Json 2.Gson解析Json 2.1生成Json ...

  • XML、JSON解析

    XML解析 XML_GData解析 JSON解析

网友评论

      本文标题:【erlang】json解析,如何只解析最外一层

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