常用的"小脚本"-json数据处理

简介: 常用的"小脚本"-json数据处理

小背景:

我们公司项目中的小脚本是一些工具类,比如常用的是MapUtil工具类的一些方法

写公司的MapUtil工具类的方法要注意,方法名的命名,因为方法名,在公司的项目的某个业务流程有对方法名的进行String截取开头字符串然后进行判断


一、工具的使用推荐

1、获取到请求url(接口的形式-一般数据都是json)

☺ 推荐谷歌浏览器,当然其他浏览器也可以的

在network 下,刷新获取目标url


2、获取到目标url(是json数据格式)

☺ 推荐火狐浏览器,直接在火狐的地址栏搜索目标url,就可以得到格式美化后的json数据了


3、小细节

(1) 使用谷歌浏览器,获取目标url进行复制的时候,有一个小细节-选择copy,不要选copy value

  • 因为copy value 会对url中的某些参数进行utf8格式转化


二、网页的Json数据和java代码的Map数据

真实业务需求中的数据结构比较复杂,多层嵌套,比如请求url的json数据:map中嵌套list,然后list的每个元素是map,这个map又嵌套了map。

☺ 小细节:要注意嵌套的是map还是list(因为0、1、2、3、4... 既可能是索引下标,也可能只是key):

  • 通过火狐浏览器折叠后的形状做判断,比如{} 则是map,如果是[] 说明是list
  • 如果是idea 调试,也是要注意debug 模式下的类型提示。因为debug 模式下,比如set类型的数据结构,有5个元素,它会给0、1、2、3、4存储一下元素然后再展示给你观察,但是要是你注意到提示的类型是Set类型的话,你就清楚在内存中,存储的绝对不是0、1、2、3、4 这样连续存储。


1、网页的json数据

例子:

☺ json 数据格式特点:

key:value

键值对之间是冒号形式


■ json 数据的本质:

就是字符串,json字符串。


2、java代码的Map数据


☺ Map 数据格式特点:

key=value

键值对之间是等号形式


3-1、业务处理-json和map的相互转换【json 序列化、反序列化】

(1) 推荐使用: JsonUtil 工具类

其实就是封装了ObjectMapper 关于json和map的相互转换。toObject方法封装的是readValue方法,toJson封装的是writeValueAsString方法。

  • json转换成map:JsonUtil.toObject(String content, Class valueType) 返回值是一个 T 类型的
    或者 JsonUtil.toObject(String content, TypeReference valueTypeRef) 返回值是一个 T 类型的
    ▷ 返回值还是T 类型(相当于Object类型),要想进一步转换map,可以强转一下
  • map转成json:JsonUtil.toJson(Object obj)


■ 例子-json转map:

/** 
* json字符串(非常普通的key:value)转成map
*/
String json = createJsonString("user","xiaoming");
       Object object1 = JsonUtil.toObject(json, new TypeReference<Object>() {});//或者使用方法JsonUtil.toObject(json, Object.class);效果也是一样的
        Map<String, Object> map1 = (Map<String, Object>) object1;
        System.out.println(map1.toString());
        System.out.println(map1.getClass());
  /*创建json字符串的方法*/
    public static String createJsonString(String key, Object value) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put(key, value);
        return jsonObject.toString();
    }
/** 
* json字符串(listmap)转成ListMap
*/
public static List<Map<String, Object>> toListMap(String json) {
    List<Object> list = JsonUtil.toObject(json,  new TypeReference<List<Object>>() {});
        List<Map<String, Object>> listw = new ArrayList<Map<String, Object>>();
        for (Object object : list) {
            Map<String, Object> ret = (Map<String, Object>) object;
            listw.add(ret);
        }
        return listw;
}
/**
* map转成json字符串
*/
Map<String, Object> oldMap1 = new HashMap<>();
oldMap.put("1", "一");
String json = JsonUtil.toJson(oldMap);
System.out.println(json);

(2) 直接使用:ObjectMapper

map 在java中,可以划分到更大的范围进行处理-Object进行处理

  • json转换成map:
    readValue(String content, Class valueType) 返回值是一个 T 类型的
    或者 readValue(String content, TypeReference valueTypeRef) 返回值是一个 T 类型的
    ▷ 返回值还是T 类型(相当于Object类型),要想进一步转换map,可以强转一下
  • map转成json:
    writeValueAsString(Object obj)
/**
* map转成json字符串
*/
Map<String, Object> oldMap1 = new HashMap<>();
oldMap.put("1", "一");
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(oldMap);
System.out.println(json);


3-2、业务中,将map转成了json字符串后,想获取json字符串中的key或者value

  • 如果是数据非常简单,量非常小,可以使用String的相关截取合并函数,但是不建议,因为json数据的key长度不是固定的,截取非常麻烦

思路:将json字符串转成json(节点)对象

节点:这块理解和dom元素的node是一样的。每个元素都可以理解位一个节点。


■ 例子:

细节:如果是一个JsonNode数组,使用jsonNode.elements();读取数组中每个node, 如果不是JsonNode数组,使用jsonNode.elements();返回jsonNode的values

//首先把嵌套map转换json字符串
String jsonStr = mapper.writeValueAsString(oldMap);
//把json字符串转换jsonNode节点对象,通过jsonNode可以获取到想要的字段
JsonNode jsonNode = mapper.readValue(jsonStr, JsonNode.class);
//迭代获取到jsonNode的values
Iterator<JsonNode> elements = jsonNode.elements();
while (elements.hasNext()) {
    JsonNode node = elements.next();
    System.out.println(node.toString());
}
//也可以迭代获取到jsonNode的keys
Iterator<String> keys = jsonNode.fieldNames();
while (keys.hasNext()) {
     String key = keys.next();
     System.out.println("key键是:" + key);
}
//通过key 获取到 value
JsonNode jNode = jsonNode.get(key);//得到value,value可能是普通的值,也可能是map
//获取到键值对
Iterator<Map.Entry<String,JsonNode>> jsonNodes = jsonNode.fields();  
   while (jsonNodes.hasNext()) {  
       Map.Entry<String, JsonNode> node = jsonNodes.next();  
       System.err.println("遍历获取key:"+node.getKey());  
       System.err.println("遍历获取值:"+node.getValue().toString());
}


  • JsonNode节点对象(看出Object)转成 josn 字符串,使用JsonUtil.toJson(jsonNode) 方法即可。


三、关于网页相关的常识

1、网页打不开

原因:可能是网站是在外网,网速受到限制;也可能是该网页的大小太大了(常见情况就是该网页有非常非常多的图片),并且网站还是在外网;

解决:vpn


2、网页打开慢时,如何查看网页加载的大小和时间

transferred over network和 resources loaded by the page 区别:

其实和content-encoding: gzip相关;两者的差别就在于压缩上,transferred 是前端页面加载的所有资源经过解压之后的原始大小。


■ 还可以查看某个请求的大小,比如图片请求的大小

一般默认下,直接查看就可以啦(毕竟看完也只是做个大概预判)


  • 如果想更精准的查看某个请求的情况:


3、善用network 提供的过滤项

(1) 通过过滤,保留接口请求


(2) 直接通过关键词过滤


4、关于刷新获取到请求url

关键:看的是页面的布局,例如滚动布局,为了获取到url,你需要滚动页面进行刷新;

通用:按F5刷新。

具体情况具体分析,例如你想获得某个点击事件的url,打开network,那就点击一下(按钮),然后观察network新增了一条url。


5、快速判断页面的数据是同步加载还是异步加载

☺ 使用谷歌浏览器,禁止js,如果禁止js后还可以看到页面数据,则是同步数据,否则就是异步数据。



如果本文对你有帮助的话记得给一乐点个赞哦,感谢!

目录
相关文章
|
8月前
|
JSON Shell DataX
DataX定时执行json脚本文件
DataX定时执行json脚本文件
470 0
|
4月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
206 61
C# 中的 XML 与 JSON 数据处理
|
3月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
5月前
|
SQL JSON 关系型数据库
"SQL老司机大揭秘:如何在数据库中玩转数组、映射与JSON,解锁数据处理的无限可能,一场数据与技术的激情碰撞!"
【8月更文挑战第21天】SQL作为数据库语言,其能力不断进化,尤其是在处理复杂数据类型如数组、映射及JSON方面。例如,PostgreSQL自8.2版起支持数组类型,并提供`unnest()`和`array_agg()`等函数用于数组的操作。对于映射类型,虽然SQL标准未直接支持,但通过JSON数据类型间接实现了键值对的存储与查询。如在PostgreSQL中创建含JSONB类型的表,并使用`-&gt;&gt;`提取特定字段或`@&gt;`进行复杂条件筛选。掌握这些技巧对于高效管理现代数据至关重要,并预示着SQL在未来数据处理领域将持续扮演核心角色。
74 0
|
7月前
|
JSON 数据格式 Python
python3 服务端使用CGI脚本处理POST的Json数据
python3 服务端使用CGI脚本处理POST的Json数据
87 6
|
SQL JSON 数据处理
大数据Hive JSON数据处理
大数据Hive JSON数据处理
264 0
|
JSON 关系型数据库 MySQL
MySQL全文搜索与JSON支持:高效检索与灵活数据处理
本文深入探讨了MySQL数据库中的全文搜索与JSON支持,通过详细的代码示例,阐述了全文搜索的原理、全文索引的创建,以及JSON数据类型的使用与操作。全文搜索在数据库中的重要性日益凸显,MySQL提供了全文索引来实现高效的文本数据检索,通过MATCH AGAINST语句,可以轻松地进行全文搜索操作。此外,MySQL的JSON支持为半结构化数据的存储和查询提供了灵活的解决方案,您可以存储JSON对象、数组等数据,并使用JSON函数来查询和修改数据。
1082 0
|
JSON 前端开发 数据处理
Echarts请求不同格式的json数据处理
Echarts请求不同格式的json数据处理
80 0
|
JSON Go 数据处理
JSON数据处理:匿名结构体助你起飞
JSON数据处理:匿名结构体助你起飞
131 0
|
Unix Windows
🎖️使用 `package.json` 中的脚本钩子来优化项目工作流程
这些脚本钩子可以使项目的开发、构建和部署过程更加高效和自动化。
240 1

热门文章

最新文章