FastJSON2 JSON 类中 toJSONString()、parseObject()、parseArray() 三个核心方法的详细使用形式说明与示例

11-高性能JSON库——fastjson2 fastjson2 阅读详情

好的,以下是对 FastJSON2 JSON 类中 toJSONString()、parseObject()、parseArray() 三个核心方法的详细使用形式说明与示例。


✅ FastJSON2 核心方法详解与实战示例

📌 一、toJSONString() 方法

作用:将 Java 对象序列化为 JSON 字符串。

✅ 1.1 基础形式:toJSONString(Object obj)

import com.alibaba.fastjson2.JSON;

public class ToJsonStringExample {
    public static void main(String[] args) {
        // 定义一个简单的 JavaBean
        class Person {
            private String name;
            private int age;
            private String city;

            public Person(String name, int age, String city) {
                this.name = name;
                this.age = age;
                this.city = city;
            }
            // getter/setter (此处省略,实际项目推荐用 Lombok)
            public String getName() { return name; }
            public void setName(String name) { this.name = name; }
            public int getAge() { return age; }
            public void setAge(int age) { this.age = age; }
            public String getCity() { return city; }
            public void setCity(String city) { this.city = city; }
        }

        // 创建一个 Java 对象实例
        Person person = new Person("张三", 28, "北京");

        // 将 Java 对象转换为 JSON 字符串(最基础用法)
        String jsonStr = JSON.toJSONString(person);
        System.out.println("基础序列化结果: " + jsonStr);
        // 输出: {"age":28,"city":"北京","name":"张三"}
    }
}

✅ 1.2 进阶形式:toJSONString(Object obj, JSONWriter.Feature... features)

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.config.JSONWriter;

public class ToJsonStringWithFeatureExample {
    public static void main(String[] args) {
        class User {
            private String name;
            private Integer age; // 使用包装类型,以便为 null
            private String email; // 该字段为 null

            public User(String name, Integer age) {
                this.name = name;
                this.age = age;
                // this.email = null; // 默认就是 null
            }
            // getter/setter (省略)
            public String getName() { return name; }
            public void setName(String name) { this.name = name; }
            public Integer getAge() { return age; }
            public void setAge(Integer age) { this.age = age; }
            public String getEmail() { return email; }
            public void setEmail(String email) { this.email = email; }
        }

        User user = new User("李四", 30); // email 为 null

        // --- 1.2.1 默认行为:不输出 null 字段 ---
        String defaultJson = JSON.toJSONString(user);
        System.out.println("默认(不输出 null): " + defaultJson);
        // 输出: {"age":30,"name":"李四"}

        // --- 1.2.2 使用 Feature:输出 null 字段 ---
        String withNullJson = JSON.toJSONString(user, JSONWriter.Feature.WriteMapNullValue);
        System.out.println("输出 null 字段: " + withNullJson);
        // 输出: {"age":30,"email":null,"name":"李四"}

        // --- 1.2.3 使用 Feature:格式化输出(美化) ---
        String prettyJson = JSON.toJSONString(user, JSONWriter.Feature.PrettyFormat);
        System.out.println("格式化输出:\n" + prettyJson);
        /*
        输出:
        {
            "age": 30,
            "name": "李四"
        }
        */

        // --- 1.2.4 组合多个 Feature ---
        String combinedJson = JSON.toJSONString(user,
                JSONWriter.Feature.WriteMapNullValue, // 输出 null
                JSONWriter.Feature.PrettyFormat      // 格式化
        );
        System.out.println("组合 Feature 输出:\n" + combinedJson);
        /*
        输出:
        {
            "age": 30,
            "email": null,
            "name": "李四"
        }
        */
    }
}

📌 二、parseObject() 方法

作用:将 JSON 字符串反序列化为 Java 对象。

✅ 2.1 基础形式:parseObject(String text, Class<T> clazz)

import com.alibaba.fastjson2.JSON;

public class ParseObjectBasicExample {
    public static void main(String[] args) {
        // 定义目标 JavaBean
        class Person {
            private String name;
            private int age;
            private String city;

            public Person() {} // 必须有无参构造器

            // getter/setter (省略)
            public String getName() { return name; }
            public void setName(String name) { this.name = name; }
            public int getAge() { return age; }
            public void setAge(int age) { this.age = age; }
            public String getCity() { return city; }
            public void setCity(String city) { this.city = city; }
            @Override public String toString() { return "Person{" + "name='" + name + "', age=" + age + ", city='" + city + "'}"; }
        }

        // JSON 字符串
        String jsonStr = "{\"name\":\"王五\",\"age\":35,\"city\":\"上海\"}";

        // 将 JSON 字符串解析为指定的 Java 对象
        Person person = JSON.parseObject(jsonStr, Person.class);
        System.out.println("反序列化结果: " + person);
        // 输出: 反序列化结果: Person{name='王五', age=35, city='上海'}
    }
}

✅ 2.2 进阶形式:parseObject(String text, Class<T> clazz, JSONReader.Feature... features)

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.config.JSONReader;

public class ParseObjectWithFeatureExample {
    public static void main(String[] args) {
        class Person {
            private String name;
            private int age;
            // getter/setter (省略)
            public String getName() { return name; }
            public void setName(String name) { this.name = name; }
            public int getAge() { return age; }
            public void setAge(int age) { this.age = age; }
            @Override public String toString() { return "Person{" + "name='" + name + "', age=" + age + '}'; }
        }

        // JSON 字符串,字段名与 JavaBean 不完全匹配(大小写不一致)
        String jsonWithWrongCase = "{\"Name\":\"赵六\",\"AGE\":29}";

        // --- 2.2.1 默认行为:严格匹配,可能失败或字段为 null ---
        Person personDefault = JSON.parseObject(jsonWithWrongCase, Person.class);
        System.out.println("默认解析结果: " + personDefault);
        // 输出: 默认解析结果: Person{name='null', age=0} (字段名不匹配导致映射失败)

        // --- 2.2.2 使用 Feature:忽略字段名大小写 ---
        Person personIgnoreCase = JSON.parseObject(jsonWithWrongCase, Person.class,
                JSONReader.Feature.IgnoreCase);
        System.out.println("忽略大小写解析结果: " + personIgnoreCase);
        // 输出: 忽略大小写解析结果: Person{name='赵六', age=29}
    }
}

✅ 2.3 泛型形式:parseObject(String text, TypeReference<T> type)

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;

import java.util.List;
import java.util.Map;

public class ParseObjectGenericExample {
    public static void main(String[] args) {
        class User {
            private String name;
            private int age;
            // getter/setter (省略)
            public String getName() { return name; }
            public void setName(String name) { this.name = name; }
            public int getAge() { return age; }
            public void setAge(int age) { this.age = age; }
            @Override public String toString() { return "User{" + "name='" + name + "', age=" + age + '}'; }
        }

        // --- 2.3.1 解析泛型 List ---
        String listJson = "[{\"name\":\"用户A\",\"age\":25},{\"name\":\"用户B\",\"age\":30}]";
        // 使用 TypeReference 来捕获泛型信息,避免运行时类型擦除
        List<User> userList = JSON.parseObject(listJson, new TypeReference<List<User>>() {});
        System.out.println("解析 List<User> 结果: " + userList);
        // 输出: 解析 List<User> 结果: [User{name='用户A', age=25}, User{name='用户B', age=30}]

        // --- 2.3.2 解析泛型 Map ---
        String mapJson = "{\"user1\":{\"name\":\"管理员\",\"age\":35},\"user2\":{\"name\":\"访客\",\"age\":20}}";
        Map<String, User> userMap = JSON.parseObject(mapJson, new TypeReference<Map<String, User>>() {});
        System.out.println("解析 Map<String, User> 结果: " + userMap.get("user1"));
        // 输出: 解析 Map<String, User> 结果: User{name='管理员', age=35}
    }
}

📌 三、parseArray() 方法

作用:将 JSON 数组字符串反序列化为 JSONArray 对象或 List<T>。

✅ 3.1 基础形式:parseArray(String text)

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSON;

public class ParseArrayBasicExample {
    public static void main(String[] args) {
        // JSON 数组字符串
        String jsonArrayStr = "[\"apple\", \"banana\", \"orange\"]";

        // 将 JSON 数组字符串解析为 JSONArray 对象(类似 List<Object>)
        JSONArray jsonArray = JSON.parseArray(jsonArrayStr);
        System.out.println("解析为 JSONArray: " + jsonArray);
        System.out.println("数组大小: " + jsonArray.size());
        System.out.println("第一个元素: " + jsonArray.getString(0)); // 自动转换为 String
        // 输出: 解析为 JSONArray: ["apple", "banana", "orange"]
        // 输出: 数组大小: 3
        // 输出: 第一个元素: apple
    }
}

✅ 3.2 泛型形式:parseArray(String text, Class<T> clazz)

import com.alibaba.fastjson2.JSON;

import java.util.List;

public class ParseArrayGenericExample {
    public static void main(String[] args) {
        class Product {
            private String name;
            private double price;
            // getter/setter (省略)
            public String getName() { return name; }
            public void setName(String name) { this.name = name; }
            public double getPrice() { return price; }
            public void setPrice(double price) { this.price = price; }
            @Override public String toString() { return "Product{" + "name='" + name + "', price=" + price + '}'; }
        }

        // JSON 数组字符串,包含对象
        String jsonArrayStr = "[{\"name\":\"iPhone 15\",\"price\":5999.0},{\"name\":\"MacBook Air\",\"price\":8999.0}]";

        // 将 JSON 数组字符串解析为 List<Product>
        List<Product> productList = JSON.parseArray(jsonArrayStr, Product.class);
        System.out.println("解析为 List<Product> 结果: " + productList);
        // 输出: 解析为 List<Product> 结果: [Product{name='iPhone 15', price=5999.0}, Product{name='MacBook Air', price=8999.0}]
    }
}

✅ 3.3 泛型形式(与 parseObject 配合):parseObject(text, new TypeReference<List<T>>() {})

注意:对于 List<T> 类型,parseArray 和 parseObject with TypeReference 是等效的,但 parseArray 更语义化。
对于 Set<T>、Map<K,V> 等其他集合类型,必须使用 parseObject with TypeReference。

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;

import java.util.Set;

public class ParseArrayWithSetExample {
    public static void main(String[] args) {
        // JSON 数组字符串
        String jsonArrayStr = "[\"item1\", \"item2\", \"item1\"]"; // 包含重复项

        // 无法用 parseArray 直接解析为 Set,因为其返回值是 JSONArray 或 List
        // 必须使用 parseObject 配合 TypeReference
        Set<String> itemSet = JSON.parseObject(jsonArrayStr, new TypeReference<Set<String>>() {});
        System.out.println("解析为 Set<String> 结果: " + itemSet);
        // 输出: 解析为 Set<String> 结果: [item2, item1] (去重)
    }
}

✅ 总结与最佳实践

方法最佳实践说明
toJSONString(obj)用于基础序列化默认不输出 null 字段,性能好
toJSONString(obj, features...)用于控制输出格式如需输出 null、格式化输出等
parseObject(text, Class)用于简单对象反序列化最安全,避免反序列化漏洞
parseObject(text, TypeReference)用于泛型集合反序列化如 List<T>, Map<K,V>
parseObject(text, Class, features...)用于控制解析行为如忽略大小写
parseArray(text)用于解析简单数组返回 JSONArray 对象
parseArray(text, Class)用于解析对象数组返回 List<T>
java深度使用fastjson2 FastJSON2 是一个快速的 JSON 处理库,支持 Java 对象与 JSON 数据之间的转换。将 Java 对象序列化为 JSON 字符串将 JSON 字符串反序列化为 Java 对象支持复杂的对象结构,包括嵌套对象、集合、泛型等我们定义一个包含嵌套对象和集合的复杂类结构。// 构造函数、getter 和 setter public User(String name , int age , Address address , List < String > hobbies) { 阅读详情

相关推荐

JSON.toJSONString()方法在Java中的使用

深入理解并使用JSON.toJSONString()方法实现Java对象序列化

小李同学的博客 1万+

fastjson2 介绍及使用

fastjson2 是 FASTJSON 项目的重要升级,目标是为下一个十年提供一个高性能的JSON库, fastjson2 性能相比原先旧的 fastjson 有了很大提升,并且 fastjson2 更安全,完全删除autoType白名单,提升了安全性。关于fastjson2升级指南fastjson2 的github地址。

西凉的悲伤博客 3万+

Fastjson 1.2.24反序列化漏洞深度剖析与实战复现

JSON序列化与反序列化是现代Web应用数据交换的核心技术,其原理是将数据结构或对象状态转换为可存储或传输的格式,反之亦然。Java生态中,Fastjson因其高性能被广泛采用,但其自动类型推导机制(autotype)在反序列化不可信数据时,可能触发危险类的加载与执行,从而引发远程代码执行(RCE)等严重安全风险。这种风险在Fastjson 1.2.24等早期版本中尤为突出,攻击者可利用精心构造的JSON字符串,通过@type字段指定服务器ClassPath中的危险类,如TemplatesImpl,并触发其

weixin_33851177的博客 469

fastjson2使用

fastjson2使用

小何的博客 5296

Fastjson 1.2.68反序列化漏洞深度剖析:从AutoCloseable利用链到纵深防御实战

JSON反序列化是Java开发中数据交换的核心技术,其原理是将JSON字符串转换为Java对象。然而,当解析器在反序列化过程中无条件调用目标类的特定方法时,可能引入严重的安全风险。Fastjson作为广泛使用的JSON库,其@type特性在提供多态支持的同时,也因对AutoCloseable接口等“功能性方法”的调用机制,成为反序列化漏洞的常见入口。攻击者可构造恶意JSON数据,利用未被充分限制的类(如特定JDBC或JNDI相关类),在close()等方法被自动触发时执行任意代码,实现远程命令执行。这类漏洞

weixin_33910385的博客 495

Fastjson反序列化漏洞深度解析:从原理到实战防护

序列化与反序列化是数据交换和持久化的核心技术,其本质是将对象状态转换为可传输或存储的格式(如JSON),并在需要时重建为内存对象。这一过程在提升开发效率的同时,也引入了严重的安全风险:当反序列化器处理来自不可信源的恶意数据时,攻击者可能通过精心构造的输入,触发非预期的类加载与代码执行,从而形成反序列化漏洞。其技术价值在于揭示了数据解析与对象构造边界的安全脆弱性,是应用安全领域的核心攻防点。在Java生态中,这一风险在JSON解析场景下尤为突出,广泛应用于Web服务、微服务通信及配置管理等场景。本文聚焦于Fa

bangtuo9862的博客 449

Fastjson中的JSON.parseObject()详细讲解

1.4.1 解决方案:TypeReference String jsonArrayStr = "[{\"name\":\"李白\"}, {\"name\":\"杜甫\"}]"; // ✅ 正确做法:使用 TypeReference 明确指定泛型结构 List userList = JSON.parseObject(jsonArrayStr, new TypeReference>() {}); 1.4.2 底层原理 Java 泛型擦除:运行时 List<User> 会变成 List,Fastjso

qq_61875563的博客 475

fastjson反序列化漏洞原理剖析与Jackson迁移实战

在Java后端开发中,JSON序列化与反序列化是数据交换的基础能力,然而反序列化过程若处理不当,可能引入严重的安全风险。以fastjson为例,其AutoType机制允许JSON字符串携带类名信息,攻击者可构造恶意数据触发远程代码执行、文件读写等危险行为,这也是反复出现反序列化漏洞的根源。理解安全原理与依赖治理的价值,有助于在Web接口、REST API、消息队列等高频场景中规避风险。随着Spring生态的成熟,Jackson凭借默认集成、完善的多态配置和社区维护优势,成为替代fastjson的首选方案。本

weixin_34195364的博客 496

FastJson

本文介绍了JSON数据格式和FastJson序列化/反序列化的基本概念。JSON是一种轻量级数据交换格式,支持数组和对象两种结构,可相互嵌套。FastJson是阿里巴巴的开源JSON处理库,具有速度快、使用简单等特点。序列化是将Java对象转为JSON字符串(使用JSON.toJSONString方法),反序列化是将JSON字符串转为Java对象(使用JSON.parseObject方法)。文中展示了Java对象、List集合和Map集合的序列化示例代码。

weixin_45784564的博客 664

Fastjson反序列化漏洞深度剖析:从原理到实战攻防

JSON反序列化是现代Web应用数据交换的核心技术,其原理是将JSON字符串转换为内存中的对象实例。然而,这一过程若未对类型信息进行严格校验,攻击者可能通过精心构造的恶意JSON数据,触发目标应用加载并执行任意类,进而实现远程代码执行(RCE)。这种漏洞在Java生态中具有极高的技术价值和广泛影响,尤其在高性能JSON处理库的应用场景下,安全风险尤为突出。Fastjson作为广泛使用的库,其默认的autoType特性曾成为经典攻击入口,而围绕JNDI注入等手法的利用链,更是安全攻防研究的重点。本文聚焦于Fa

weixin_34323858的博客 397

Fastjson最新版反序列化漏洞深度剖析与安全加固实战

反序列化是Java应用数据交互中的核心机制,它将序列化的数据流还原为内存中的对象实例。其原理在于根据类型信息动态加载类并调用特定方法重建对象。这一机制在提供灵活性的同时,若处理不可信数据,可能成为严重的安全漏洞,攻击者可构造恶意数据触发非预期代码执行,对应用安全构成直接威胁。在JSON处理领域,Fastjson因其高性能被广泛使用,但其默认支持通过@type指定反序列化类型的特性,结合JNDI注入等利用链,构成了远程代码执行(RCE)的典型应用场景。本文聚焦于Fastjson最新版本中曝出的RCE漏洞,通过

weixin_34302561的博客 337

Fastjson代码分析团队分工及代码介绍

目录 fastjson代码简介 fastjson代码分析的必要性和重要性 fastjson代码概述 2021SC@SDUSC fastjson代码简介 fastjson开源git仓库:https://github.com/alibaba/fastjson fastjson是一个能将Java对象转化成JSON格式的一个Java类库;fastjson也可以将JSON字符串转化为对应的Java对象。fastjson可以以Jar包的形式,嵌入已存在的各Java项目中以供调用。 fastjson代

lllhhhyyy999的博客 517

表态投票:让你的文章得到更真实的读者反馈

在内容创作的过程中,了解读者的真实反馈对于提高文章质量和提升读者体验至关重要。表态投票机制作为一种有效的反馈收集工具,能够帮助创作者实时掌握读者对内容的态度和意见。这种机制通过设置不同的投票选项,使读者能够对文章的各个方面进行评分或选择,从而提供精准的数据支持。本文探讨了表态投票机制的设计原则、实施方法以及在实际应用中的优势。重点分析了如何通过合理设置投票选项来引导读者表达真实意见,以及如何利用收集到的数据进行内容优化。通过案例研究,文章还展示了表态投票机制在提升内容互动性和满意度方面的实际效果。综上所述,

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

从Fastjson迁移到Jackson:Java JSON序列化库的安全与工程实践

JSON序列化与反序列化是现代软件数据交换的核心技术,其原理是将内存中的对象结构转换为可传输或存储的文本格式,反之亦然。这项技术的价值在于实现了跨平台、跨语言的数据互通,是微服务通信、API接口和缓存存储的基石。在实际工程中,选择一个安全、稳定且生态成熟的序列化库至关重要,它直接影响到系统的长期维护成本和抗风险能力。本文聚焦于Java生态中广泛使用的JSON处理库,针对**安全风险**和**社区生态**等关键考量,深入探讨了从Fastjson迁移至Jackson的完整方案、兼容性挑战与性能调优,为面临类似技

weixin_30634661的博客 385

避开SiC MOSFET驱动设计的3个大坑:电流/电阻/电压配置全指南

本文深入解析SiC MOSFET驱动设计中的三大关键参数:驱动电流、栅极电阻和工作电压,揭示常见设计误区与优化方案。通过实际案例与数据对比,指导工程师避开第三代电力电子半导体应用中的典型陷阱,提升系统可靠性与效率。特别针对驱动电源配置、栅极电阻选型等核心问题提供可落地的解决方案。

weixin_29214199的博客 382

LEF文件介绍及其生成

介绍LEF文件及其生成方法

weixin_43249158的博客 3万+

JAVA JSON XML PDF ZIP介绍

FastJson是阿里巴巴公司提供的一个用Java语言编写的高性能功能完善的JSON库,该库涉及的最基本功能就是序列化和反序列化。Fastjson支持java bean的直接序列化,同时也支持集合、Map、日期、Enum和泛型等的序列化。你可以使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化,常用的序列化操作都可以在JSON类上的静态方法直接完成。Fastjson采用独创的算法,将parse的速度提升到极致,号称超过所有Json库。而且,使用Fastjson解析时,除了需要使

hudeyong926的专栏 615

Win11笔记本BIOS设置避坑大全:Secure Boot、RST、UEFI引导,一次讲清

本文详细解析了Win11笔记本BIOS设置中的关键问题,包括Secure Boot、Intel RST和UEFI引导的配置方法,帮助用户避开双系统安装中的常见陷阱。特别针对不同品牌笔记本的BIOS界面差异,提供了实用的操作指南和优化建议,确保系统兼容性和启动效率。

weixin_29251131的博客 686

从fastjson到Jackson:反序列化漏洞的底层逻辑与迁移实践

在Java服务开发中,JSON序列化与反序列化是数据交换的基础技术,而反序列化漏洞则是安全攻防的高危地带。fastjson因AutoType机制允许外部输入指定类加载,将安全决策权交予不可信数据源,导致攻击者可利用JNDI、RMI等链路实现远程代码执行。其黑名单修补策略天然滞后,补丁循环让团队疲于应对,且1.x已进入维护末期。相比之下,Jackson默认禁用多态反序列化,安全边界清晰,通过显式配置即可兼顾功能与可控性。本文从反序列化原理切入,剖析fastjson漏洞频发的根因,对比API差异,并提供从依赖扫

weixin_34007886的博客 336

Python小白也能玩转迅投QMT量化交易?手把手教你从安装到第一个策略

本文为零基础Python用户提供了上手迅投QMT量化交易平台的完整指南。从Python 3.6环境配置、QMT客户端获取安装,到核心概念讲解,并手把手教你编写并回测一个经典的双均线交易策略,帮助初学者快速迈出量化交易的第一步。

weixin_29103191的博客 763

Git GUI学习教程

学习宗旨:快速应用,不易忘记 很遗憾,申请Git的专栏未审批,那我就不再写专栏了,把最近的学习心得写一下,我也是在学习中进行,有任何问题直接留言,回复交流,我还采用思路+实践模式快速过。 目录 1、Git是什么 2、远程仓库 1)GitHub: 2)Gitee(码云): 3、安装Git(Windows) 1)下载 ...

Alexantao 的专栏 7249

Java项目禁用fastjson迁移Jackson:反序列化漏洞治理与依赖安全

JSON序列化与反序列化是Java后端开发的基础技术,而反序列化安全性直接决定系统边界是否可靠。在Java生态中,组件默认配置的开放程度往往成为攻防博弈的关键,fastjson的autoType机制允许通过@type字段动态加载类,虽提升了多态处理便利性,却也导致攻击者利用危险类构造利用链,引发fastjson反序列化漏洞。相比之下,Jackson作为Spring Boot默认JSON库,默认关闭多态反序列化,安全基线与生态集成更优,技术价值体现在可控的攻击面和稳定的社区维护。在工程实践中,团队需通过依赖树

weixin_34178244的博客 416

微信小程序 - 超详细小程序接入腾讯地图的完整流程,提供地图显示、IP 属地定位、地理位置名称、获取经纬度等超多功能示例(可一键复制并运行的功能源代码,详细的注释及常见问题汇总)小白直接上手!

微信小程序腾讯地图怎么接入,小程序项目中使用腾讯地图sdk,小程序中使用腾讯地图,微信小程序集成腾讯地图功能,微信小程序通过ip获取其地址、经纬度、详细地址,小程序使用腾讯地图跨域解决方法,微信小程序引入腾讯地图详细教程,原生小程序引入腾讯地图,微信小程序如何植入腾讯地图,微信小程序腾讯地图配置及使用详细教程,小程序植入腾讯地图SDK,微信小程序项目怎么用腾讯地图,微信小程序IP属地定位,获取当前用户位置名称,微信小程序如何使用腾讯地图获取用户的定位位置,在小程序中使用腾讯地图,实现定位,距离计算,实时搜索

🏆 前端领域优质创作者 8802

第一次跑 V8 测试:gm、run-tests.py 与字节码期望文件,一次讲清楚

你 clone 下来的 V8 仓库自带一整套测试框架:几千个 JS 回归用例、C++ 单元与集成测试、ES 一致性套件,全部内置在源码树里,不需要额外拉测试平台。入口集中在 [tools/testrunner/](https://link.gitcode.com/i/9f453e906b63b024d06c8f539e305116),由 [tools/run-tests.py](https://l

gitblog_00428的博客 501

爬取Unsplash高清壁纸:Python爬虫实战教程(最新技术)

在当今数字化时代,高清壁纸已经成为人们个性化设备的重要元素。Unsplash作为全球最知名的免费高质量图片网站,汇集了数百万张由全球摄影师贡献的高清图片。然而,Unsplash官网的下载方式需要手动操作,对于需要批量下载壁纸的用户来说效率较低。本文将带你深入探索如何使用Python爬虫技术高效爬取Unsplash高清壁纸,从基础到进阶,全面掌握图片爬取的核心技术。Unsplash成立于2013年,是一个完全免费的图片分享平台。高质量内容:所有图片均由专业摄影师上传,分辨率普遍达到4K以上免费商用。

2201_76125261的博客 935

如何配置SSC CANopen的excel文件

如何配置 CANOpen 的 EXCEL 文件

PI_sunyang的博客 3695
上一篇: FastJSON2 常用工具类详解与实战指南
下一篇: Podman 完整实战指南:Fedora Workstation + Java 开发者视角
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值