当前位置:首页 > 网站运营杂谈 > 正文

如何用jsonencode把数组转成JSON?看这3个实例!

如何用jsonencode把数组转成JSON?看这3个实例!

兄弟们,前几天被个小事儿折腾得够呛。 我在搞一个内部的小工具,数据是在后端抓出来的,存成数组(Array)那是顺理成章的事儿。但是等我把数据怼给前端那个新来的小伙子的时...

兄弟们,前几天被个小事儿折腾得够呛。

我在搞一个内部的小工具,数据是在后端抓出来的,存成数组(Array)那是顺理成章的事儿。但是等我把数据怼给前端那个新来的小伙子的时候,他直接就给我扔回来了,说我传的格式不对,他要的得是“纯”的JSON格式,不是他妈数组。

我当时心想,数组就数组呗,不都是数据吗?搞得这么麻烦干结果被他鄙视了一番。为了找回面子,我决定自己动手,彻底搞明白数组和JSON之间的格式转换,到底有啥门道。

第一步:打开代码,找工具

我立马打开我常用的编辑器,琢磨着这事儿肯定有个现成的轮子。一通翻阅资料,果然,找到了一个叫 jsonencode 的好东西。这名字一听就是专门干这活儿的,把数组变成JSON,简单粗暴。

我的实践思路很简单:既然要转,那数组有几种常见的形态,我就得挨个儿试试,看看 jsonencode 对不同形态的数组,到底是咋处理的。

如何用jsonencode把数组转成JSON?看这3个实例!

第二个过程:简单数组上手搞(实例一)

我先拿最简单的、那种没有名字(键)的数组开刀。就像咱们平时排个队,从1号排到3号,只有位置,没有名字那种。

我把代码敲了进去,就弄了几个数字:

  • 我定义了一个数组,里头塞了“苹果”、“香蕉”、“橘子”这三个值。
  • 然后我把这个数组丢给了 jsonencode
  • 结果实现了:出来的东西长这样:["苹果", "香蕉", "橘子"]

我发现,对于这种纯粹按照顺序排列的数组,它就给转换成了一个JSON的数组。 方括号包裹着,跟我心里想的差不多。

如何用jsonencode把数组转成JSON?看这3个实例!

第三个过程:带名字的数组(字典)的尝试(实例二)

光试简单的没意思,平时数据里哪有那么多只有顺序没有名字的。更多的是那种,有名字对应着值的数组,就像个小字典一样。

这回我给数组里的每个值都起了个名,也就是设置了“键”:

  • 我定义了一个数组,键是“姓名”和“年龄”,值分别是“老王”和“40”。
  • 然后同样,把它扔进 jsonencode 里头跑一圈。
  • 结果实现了:出来的东西变了样:{"姓名": "老王", "年龄": 40}

这回我很意外,它没有用方括号,而是用了花括号 包起来了!这不就是前端小伙子天天喊的那个JSON对象吗?

我悟了,原来 jsonencode 会自己判断数组的结构。如果发现你有明确的“名字”(键),它就会很识趣地给你转成一个JSON对象。这个发现让我觉得这工具挺聪明的。

第四个过程:复杂嵌套,一次搞定多条数据(实例三)

前面两个都是单条数据,但实际业务里,我不可能只传一条数据过去。都是一堆一堆的记录,每条记录里又包含好几个字段。这就是所谓的“数组里面套着数组”。

我决定搞个复杂点的,模拟查数据库出来的那种多条记录:

  • 我定义了一个大数组,里面放了两个小数组。
  • 每个小数组都是“键值对”的结构,比如第一条是“ID”为1,“商品”为“T恤”,第二条是“ID”为2,“商品”为“裤子”。
  • 我把这个“大套娃”数组丢了进去,按下了运行。
  • 结果实现了:输出的是 [{"ID": 1, "商品": "T恤"}, {"ID": 2, "商品": "裤子"}]

这回的结果是 方括号 包裹着 花括号 。完美,这才是业务里最常见的那种“JSON列表”。

第五个阶段:实践下次再也不用求人了

这三个实例跑下来,我彻底明白了这玩意儿是怎么运作的,心里踏实多了。 jsonencode 的用法巨简单,就是把数组丢进去就行。

真正要注意的是:你给它什么形态的数组,它就吐出什么形态的JSON。

  • 如果是纯列表(只有值,没有自定义名字),它会给你JSON数组 。
  • 如果带名字(键值对),它会给你JSON对象 。
  • 如果是多个带名字的数组塞在一个大数组里,它就给你一个JSON数组,里面套着JSON对象 [{...}, {...}]

以后前端那个小伙子再跟我提JSON格式的问题,我直接给他怼回去,数据格式我说了算,让他自己去处理。这回实践,没花多少时间,但确实把一个模糊的概念彻底搞明白了,值了!

最新文章