实习周记(十):JSON

JSON数据的使用

开发过程中,经常会涉及到各种数据交互,项目中使用json这种数据交换格式,采用fastjson库进行数据转换

JSON

一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据

JSON字符串

{
    "test":"测试"
}

通过单引号或者双引号包裹起来的数据

JSON对象

{
    "name":"chenchenchen",
    "age":22
}

语法格式

  1. 数据包含于括号中

  2. 数据以"键:值"对的形式出现

  3. 键值对间通过括号分隔离

JSON对象数组

{
    "list":[
        {"name": "张三", "age": 22},
		{"name": "李四", "age": 23},
		{"name": "王五", "age": 24}
    ],
    "test":"测试"
}

1:数据在方括号中

2:方括号中每个数据以json对象形式出现

3:每两个数据以逗号分隔

例子

{
    "uin": "1",
    "userid": "5",
    "ver": "1.0.0",
    "device": "1",
    "apiid": 2,
    "country": "CN",
    "lang": 0,
    "token": "1",
    "data":{
        "":""
        },
    "cmd": "",
    "auth": "1",
    "time": 1
}

fastjson

fastjson.jar是阿里巴巴开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换

原理

在该包中,主要有三个类,JSON,JSONArray和JSONObject,后两者继承与JSON类,其中

  1. JSONObject实现了Map接口,而json数据又是通过键值对的方式存储,我们可以推测JSONObject的底层由Map实现,
  2. JSONArray实现了List接口,json数组对象中存储的为一个个json对象,我们可以对其进行删改,操作方法同List

常用api

{
        "code": 0,
        "data": {
                "map_list": [{
                        "select": {
                                "lang": 0,
                                "country": "CN",
                                "size": 1,
                                "worldtype": "1",
                                "ver": 12039,
                                "uin_icon": "-42", 
                                "dir": "12",
                                "thumb_md5": "1",
                                "node": "1",  
                                "name_checked": 1,
                                "intros_thumb": {
                                        "1": "1",
                                        "checked": 1
                                },
                                "canrecord": "0",
                                "have_mod": "1",
                                "md5": "1",
                                "down24_ct": 1,
                                "share_version": "1",
                                "score": 30,  
                                "black_stat": 0,
                                "open": 1,
                                "uin": 1,  
                                "intropics": [ 
                                        {
                                            "name_ban": "1.png",
                                            "md5": "1"
                                        },
                                        {
                                            "name_ban": "4.png",
                                            "md5": "2"
                                        },
                                        {
                                            "md5": "11",
                                            "name": "4.png"
                                        }
                                ]
                        },
                        "report2": {
                                "cc": 0,
                        },
                        "collectc": 4,
                        "id": "2", 
                        "comment": {
                                "wwc": 1,
                                "cdda": 1,
                                "creator_threshold": 1,
                                "stars": [78],
                                "tips": {
                                        "1": 1,
                                        "total": 1,
                                        "2": 1,
                                        "3": 1,
                                        "4": 1
                                },
                                "n": 1,
                                "dd1n": 3,
                        },
                        "init_time": 1,
                        "_h_": 2,
                }],
                "urls": ["http:xxxx"]  // cdn地址
        },
        "msg": "ok"
}
  1. 通过调用接口,获取json数据
String result = getJson(parm);
  1. 获取json数据中特定的数据,并转换为列表
String data = JSONObject.parseObject(result).getString("data");
  1. 将json数据转化成列表
List<String> cdnUrlsList = JSON.parseArray(data.getString("urls"), String.class);
  1. 将data中的数据拼接到urls中,并返回
 List<String> cdnUrlsList = JSON.parseArray(data.getString("urls"), String.class);
        String cdn = CollectionUtils.isEmpty(cdnUrlsList) ? "" : cdnUrlsList.get(0);
        //拼接地图
        for (GameMapDetailInfo f : detailInfoList) {
            GameSelectDetailInfo detailInfo = f.getSelect();
            if (detailInfo == null) {
                continue;
            }
            f.getSelect().setThumbUrl(String.format(cdn, Integer.valueOf(detailInfo.getNode())) + detailInfo.getNode() + "/" + detailInfo.getDir() + "/" + detailInfo.getThumbMd5() + ".png");
        }
posted @ 2021-11-18 15:57  2月2日  阅读(68)  评论(0)    收藏  举报