记录一次JSON数据处理(省市区数据)
最近在实习工作中遇到了一个需要问题:将后台返回的省市区 json 数据格式化以便前端渲染。这个问题真的是缠绕了我好几天,有思路但是思路特别模糊,今天终于解决了。
返回的数据格式如下:
[
  {
    "children": [
      {
        "children": [
          "东城区",
          "西城区",
          ...
        ],
        "name": "北京市"
      }
    ],
    "name": "北京市"
  },
  {
    "children": [
      {
        "children": [
          "西湖区",
          "余杭区",
           ...
        ],
        "name": "杭州市"
      }
    ],
    "name": "浙江省"
  },...]
我只需要第一级和第二级的 name 数据值,可以使用递归函数来查找,具体看下面的代码:
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.js"></script>
<script>
// 使用ajax获取数据
function dataFormatterTypeId() {
    let json
    $.ajax({
        url:"administrative-divisions.json",
        type:"get",
        dataType:"json",
        async: false,
        success:function(result){
          //  console.log(result)
           json = result
        }
    })
    return json
}
let res = dataFormatterTypeId()
// console.log(res)
// 核心代码----------------递归实现
function getJson (json) {
  for (let i = 0; i < json.length; i++) {
    if (json[i].children && typeof json[i].children[0] === "object") {
      this.getJson(json[i].children)
    } else {
      json[i].children = undefined
    }
  }
  return json
}
console.log(this.getJson(res))
这里主要的思路是用递归函数实现:使用递归函数设置最后一级 children 的值为undefined 然后返回数据即可。
然而,主要的问题是 终止递归的时机在哪里?我也知道可以通过判断 children 里面的数据部位 Object 类型的时候就可以终止递归,但是,我把最关键的代码写成了 typeof json[i].children[0] === Object,...
好吧,最基础的知识点:typeof 的取值有 "number"、"string"、"boolean"、"object"、"function" 和 "undefined",注意是字符串。
而今天可能脑子比较清醒,突然想到使用typeof打印以下结果是啥,结果就解决了。
此外,在本地测试,通过jquery ajax 模拟获取数据并返回给全局使用,就是dataFormatterTypeId()函数所作的事情。
记录一次JSON数据处理(省市区数据)的更多相关文章
- 【多端应用开发系列1.1.1 —— Android:使用新浪API V2】服务器Json数据处理——Json数据概述
		[前白] 一些基础的东西本系列中就不再详述了,争取尽量写些必不可少的技术要点. 由于本系列把Web Service 构建放到了第二部分,Android项目就采用新浪微博API v2作为服务器端. [原 ... 
- iOS开发——数据解析Swift篇&简单json数据处理
		简单json数据处理 //loadWeather var url = NSURL(string: "http://www.weather.com.cn/adat/sk/101240701.h ... 
- 数据库记录转换成json格式 (2011-03-13 19:48:37) (转)
		http://blog.sina.com.cn/s/blog_621768f30100r6v7.html 数据库记录转换成json格式 (2011-03-13 19:48:37) 转载▼ 标签: 杂谈 ... 
- $.ajax返回的JSON格式的数据后无法执行success的解决方法
		近段时间做项目,在项目使用了ajax技术,遇到了一个奇怪的问题:"$.ajax返回的JSON格式的数据无法执行success",代码是这样写的: 1 $.ajax({ 2 .. 3 ... 
- Android Volley获取json格式的数据
		为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和j ... 
- Android中解析JSON形式的数据
		1.JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式, ... 
- Spark SQL JSON数据处理
		背景 这一篇可以说是“Hive JSON数据处理的一点探索”的兄弟篇. 平台为了加速即席查询的分析效率,在我们的Hadoop集群上安装部署了Spark Server,并且与我们的Hive数据仓 ... 
- 如何使用JSON格式 POST数据到服务器
		1. JSON的数据格式a) 按照最简单的形式,可以用下面这样的 JSON 表示名称/值对: { "firstName": "Brett" } b) 可以创建包 ... 
- .NET MVC Json()处理大数据异常解决方法
		[1-部分原文]: .NET MVC Json()处理大数据异常解决方法 整个项目采用微软的ASP.NET MVC3进行开发,前端显示采用EasyUI框架,图表的显示用的是Highcharts,主要进 ... 
随机推荐
- C#数据结构与算法系列(十):中缀表达式转后缀表达式
			1.具体步骤 1)初始化两个栈:运算符栈s1和储存中间结果的栈s2:2)从左至右扫描中缀表达式:3)遇到操作数时,将其压s2:4)遇到运算符时,比较其与s1栈顶运算符的优先级: (1)如果s1 ... 
- Python 简明教程 --- 12,Python 字典
			微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码写的越急,程序跑得越慢. -- Roy Carlson 目录 Python 字典是另一种非常实用 ... 
- spring boot 和shiro的代码实战demo
			spring boot和shiro的代码实战 首先说明一下,这里不是基础教程,需要有一定的shiro知识,随便百度一下,都能找到很多的博客叫你基础,所以这里我只给出代码. 官方文档:http://sh ... 
- Python实用笔记 (7)高级特性——切片
			列表L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] 取前3个元素 >>> L[0:3] ['Michael', 'Sarah', ' ... 
- 如何使用ABP进行软件开发之基础概览
			ABP框架简述 1)简介 在.NET众多的技术框架中,ABP框架(本系列中指aspnetboilerplate项目)以其独特的魅力吸引了一群优秀开发者广泛的使用. 在该框架的赋能之下,开发者可根据需求 ... 
- 【Xamarin.Forms 1】App的创建与运行
			引言 本篇文章将从介绍Xamarin.Forms创建开始. 开发环境 Visual Studio 2019 16.6.2 Xamarin.Forms 4.6.0.726 Android 5.0 (AP ... 
- 2020-06-30  pol实现execl导入导出
			1.导入依赖 <!-- 解析表格 --> <dependency> <groupId>org.apache.poi</groupId> <arti ... 
- 简单案例:form表单应用向后端发数据
			效果如下图: 先新建一Django项目. 最后在terminal执行python manage.py runserver 8090 运行djago程序 浏览器输入http://127.0.0.1:80 ... 
- vs2017,vs2019 无法连接到Web服务器“IIS Express”
			不知道啥原因,突然就不能访问了 我的解决方式: 在项目的根目录下显示所有隐藏的文件,找到.vs文件夹,删除: 重启项目,尝试运行,发现正常了. (完) 
- flask的小错误
			这几天刚学flask,根据录屏学代码的时候,遇到一个问题 基本能看懂错误,role_id是类的一个字段,应该是一个对象,最后发现是单词写错了,应该是大写的Column, db.Column(db.In ... 
