业务场景:

有如下一个json数据:

{"class":"高三1班","student":{"name":"chen","sex":"男","age":18}}

需要提取student下的name值应该如何操作?假如后面需要在student里增加performance 字段,又如何操作?

问题分析:

  1. 首先确定的是这是一个可扩展的json数据,换句话说,json时里面的字段是会随着后面的需求变化而变化的。
  2. 在实际应用中,像这类json数据通常用于前后端交互时能实现一个动态扩展,服务端在不改变入参时动态获取接口接收的数据。
  3. 还有一点要明确的是,上面的数据可扩展范围只限于student字段,如果扩展为下面的json时本示例则不适用: {"class":"高三一班","student":{"name":"chen","sex":"男","age":18},"course":["英语","数学"]}

解决思路:

  1. json数据解释为golang里面可操作的数据只能使用map,所以可以确定的是使用标准库里的json包将json解释为map结构。
  2. 因为json里面的student字段的值是另一个json,所以需要把student字段的值提取出来,再解释为json。
  3. 最后则可以使用map的方法把student里的name值提取出来。

代码示例(仅供参考):

运行结果:

问题思考:

更好的方法:

github有一个第三方json处理库可以更方便的处理json.