前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >es6将txt数据序列化成json

es6将txt数据序列化成json

作者头像
杨肆月
发布2019-08-15 18:40:06
6240
发布2019-08-15 18:40:06
举报
文章被收录于专栏:全栈开发之路全栈开发之路

原数据(txt格式)

代码语言:javascript
复制
CN1100  PROVINCE    北京市

CN1101  CITY    北京市-北京市

CN1300  PROVINCE    河北省

CN1303  CITY    河北省-秦皇岛市

CN1309  CITY    河北省-沧州市

CN1311  CITY    河北省-衡水市

CN3500  PROVINCE    福建省

CN3501  CITY    福建省-福州市

CN3503  CITY    福建省-莆田市

CN3600  PROVINCE    江西省

CN3601  CITY    江西省-南昌市

CN3609  CITY    江西省-宜春市

CN3611  CITY    江西省-上饶市

期望的JSON格式

代码语言:javascript
复制
[

    {

        "code": "CN11",

        "province": "北京市",

        "city": [

            {

                "code": "01",

                "name": "北京市"

            }

        ]

    },

    {

        "code": "CN13",

        "province": "河北省",

        "city": [

            {

                "code": "03",

                "name": "秦皇岛市"

            },

            {

                "code": "09",

                "name": "沧州市"

            },

            {

                "code": "11",

                "name": "衡水市"

            }

        ]

    },

    {

        "code": "CN35",

        "province": "福建省",

        "city": [

            {

                "code": "01",

                "name": "福州市"

            },

            {

                "code": "03",

                "name": "莆田市"

            }

        ]

    },

    {

        "code": "CN36",

        "province": "江西省",

        "city": [

            {

                "code": "01",

                "name": "南昌市"

            },

            {

                "code": "09",

                "name": "宜春市"

            },

            {

                "code": "11",

                "name": "上饶市"

            }

        ]

    }

]

步骤:

1、观察原TXT文件格式,发现每一行换行了,即使用‘/n’隔开

2、str=(txt里的数据),let arrStr = str.split('\n');

console.log(arrStr)后发现,每行里一个小字符串之间由tab隔开,即使用‘/t’隔开

3、以分割的思维来写代码,多次对字符串运用split

代码语言:javascript
复制
let arrStr = str.split('\n');

let zoneList = [];

arrStr.map(i => {      //调用数组的每个元素i

    let item = i.split('\t');

  //没有'-'分割,即 省 的字段

// 例如:CN1300    PROVINCE    河北省


if (i.indexOf("-") == -1) {

        zoneList.push({

            code: item[0].slice(0, 4),

            province: item[2],

            city: []

        })

  } else {

        //例如福建省-福州市

        let city = item[2].split('-');

        //找到  河北省与河北省-秦皇岛市、河北省-沧州市、河北省-衡水市,-前名字相同的

        //并只返回一条(这个很关键)

        let cur = zoneList.find(j => j.province == city[0])

        cur.city.push({

            code: item[0].slice(4, 6),

            name: city[1]

        })

  }

})

//最后输出在控制台上内容太多最好序列化下才看得到

代码语言:javascript
复制
console.log(JSON.stringify(zoneList));
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.09.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档