如何将面向对象操作 JSON 的库改写为支持长尾词和四则运算的 JSON 库?

2026-04-11 10:351阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计294个文字,预计阅读时间需要2分钟。

如何将面向对象操作 JSON 的库改写为支持长尾词和四则运算的 JSON 库?

前言:在前端的JSON解析器中,目前仅实现了将一个JSON字符串转换为JSONObject的功能,并未将其映射为一个具体的struct;如果想要获取值,则需要先做断言将其转换为map或切片。

如何将面向对象操作 JSON 的库改写为支持长尾词和四则运算的 JSON 库?

前言

在之前实现的 JSON 解析器中当时只实现了将一个 JSON 字符串转换为一个 JSONObject,并没有将其映射为一个具体的 struct;如果想要获取值就需要先做断言将其转换为 map 或者是切片再来获,会比较麻烦。

decode, err := gjson.Decode(`{"glossary":{"title":"example glossary","age":1}}`) assert.Nil(t, err) glossary := v["glossary"].(map[string]interface{}) assert.Equal(t, glossary["title"], "example glossary") assert.Equal(t, glossary["age"], 1)

但其实转念一想,部分场景我们甚至我们只需要拿到 JSON 中的某个字段的值,这样还需要先声明一个 struct 会略显麻烦。

经过查询发现已经有了一个类似的库来解决该问题,github.com/tidwall/gjson 并且 star 数还很多(甚至名字都是一样的

本文共计294个文字,预计阅读时间需要2分钟。

如何将面向对象操作 JSON 的库改写为支持长尾词和四则运算的 JSON 库?

前言:在前端的JSON解析器中,目前仅实现了将一个JSON字符串转换为JSONObject的功能,并未将其映射为一个具体的struct;如果想要获取值,则需要先做断言将其转换为map或切片。

如何将面向对象操作 JSON 的库改写为支持长尾词和四则运算的 JSON 库?

前言

在之前实现的 JSON 解析器中当时只实现了将一个 JSON 字符串转换为一个 JSONObject,并没有将其映射为一个具体的 struct;如果想要获取值就需要先做断言将其转换为 map 或者是切片再来获,会比较麻烦。

decode, err := gjson.Decode(`{"glossary":{"title":"example glossary","age":1}}`) assert.Nil(t, err) glossary := v["glossary"].(map[string]interface{}) assert.Equal(t, glossary["title"], "example glossary") assert.Equal(t, glossary["age"], 1)

但其实转念一想,部分场景我们甚至我们只需要拿到 JSON 中的某个字段的值,这样还需要先声明一个 struct 会略显麻烦。

经过查询发现已经有了一个类似的库来解决该问题,github.com/tidwall/gjson 并且 star 数还很多(甚至名字都是一样的