首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么ToStringBuilder(ToStringStyle.JSON_STYLE)在对象前后添加引号?这是真的吗?

ToStringBuilder 是 Apache Commons Lang 库中的一个工具类,用于将对象转换为字符串表示形式。ToStringStyle.JSON_STYLEToStringStyle 枚举中的一个值,用于指定以 JSON 样式生成字符串。

基础概念

ToStringBuilderToStringStyle 是 Apache Commons Lang 库中的两个类,用于帮助开发者更方便地生成对象的字符串表示形式。ToStringStyle 定义了不同的字符串样式,包括 JSON_STYLESIMPLE_STYLEMULTI_LINE_STYLE 等。

相关优势

  • 简化代码:通过使用 ToStringBuilder,可以减少手动拼接字符串的代码量,提高代码的可读性和可维护性。
  • 灵活性:不同的 ToStringStyle 可以满足不同的字符串表示需求,例如 JSON 样式、简单样式等。

类型

ToStringStyle 枚举中包含以下几种类型:

  • DEFAULT_STYLE
  • SIMPLE_STYLE
  • MULTI_LINE_STYLE
  • NO_FIELD_NAMES_STYLE
  • SHORT_PREFIX_STYLE
  • PRETTY_PRINT_STYLE
  • JSON_STYLE

应用场景

  • 调试:在调试过程中,通过打印对象的字符串表示形式,可以快速查看对象的内容。
  • 日志记录:在日志中记录对象的字符串表示形式,便于后续分析和排查问题。
  • API 响应:在构建 API 响应时,将对象转换为 JSON 格式的字符串。

问题分析

ToStringBuilder(ToStringStyle.JSON_STYLE) 在对象前后添加引号是因为 JSON 格式要求字符串必须用双引号括起来。

示例代码

代码语言:txt
复制
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.JSON_STYLE)
                .append("name", name)
                .append("age", age)
                .toString();
    }

    public static void main(String[] args) {
        Person person = new Person("Alice", 30);
        System.out.println(person.toString());
    }
}

输出结果

代码语言:txt
复制
{"name":"Alice","age":30}

解决问题的方法

如果你不希望在对象前后添加引号,可以考虑使用其他 ToStringStyle,例如 SIMPLE_STYLEMULTI_LINE_STYLE

代码语言:txt
复制
System.out.println(new ToStringBuilder(this, ToStringStyle.SIMPLE_STYLE)
        .append("name", name)
        .append("age", age)
        .toString());

参考链接

通过以上解释和示例代码,你应该能够理解为什么 ToStringBuilder(ToStringStyle.JSON_STYLE) 在对象前后添加引号,并且知道如何根据需求选择合适的 ToStringStyle

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • python0007_ print函数_字符串_display_电传打字机_程序员的浪漫

    添加图片注释,不超过 140 字(可选) python 中 一般 用 单引号毕竟 单引号 比 双引号 少按下一个shift添加图片注释,不超过 140 字(可选)但oeasy的 python教程...选用 双引号 引用字符串这是为什么呢?...模仿c语言 c语言中 单引号 表示 单个字符 'o'双引号 表示 字符串 "oeasy"单字符的字符串 也还 字符串 "a"添加图片注释,不超过 140 字(可选)python语言 和 c语言...(function)添加图片注释,不超过 140 字(可选)built-in 内建 就是 游乐场里面已经建好的可以直接用的真的能输出程序猿的浪漫?...添加图片注释,不超过 140 字(可选)print 指的不是 印刷

    3500

    前端对接口是什么意思_接口返回json格式

    为什么需要JSON? 总结 什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。...装字符串: var feeInfoList = { "name":"小斌哥"}; 通过feeInfoList.name,就能拿到带双引号的”小斌哥”啦~ 装对象: var 小斌哥= {...":21 }, { "name":"貂蝉", "sex":"美女", "age":18 } ]}; 直接看可能比较懵,但是仔细看,键是”array”,值就是后面的一大坨,对?...~ 为什么需要JSON?...等到去了公司做前后端分离的项目的时候,大家会发现前端与后端交互大部分都是接口(其实就是用json装的一些数据),举个栗子,用户浏览器输入了用户名和密码要登录,这个输入的用户名和密码肯定会发到后台,后台进行一系列的处理并且给前台反馈结果

    96330

    VBA新手教程:从入门到放弃(0)

    为什么要写VBA呢,因为Python处理完大量数据后,用VBA可以完成更多自动化的后续工作,而且excel文档流通性更强嘛。...前后用了30分钟,最后收获了100RMB啊哈哈哈哈哈哈可以吃顿金拱门了!...别怕,VBA真的很容易! 方法、属性、对象、事件、函数让这些该死的词去死吧! 就像你问一个美国人英语里面什么是量词介词时态主格宾格定语单复数他可能会用一个word回击你!...有多少无辜的孩童是java“面向对象”这一块搞不清啥是对象而放弃的。...双引号你先强行写一波,后面我会讲什么时候加双引号什么时候不加。 6.来运行程序,试一下!点击运行按钮。(其实按F5也可以哦~) ? ?

    1.1K30

    【安全】XSS 类型

    具体意思是 黑客往网页注入恶意脚本代码,通过恶意脚本,获取和控制用户信息 也许你会有一个问题 XSS 全名 的简写不是 CSS ? 没错!...为什么叫做反射型? 服务器不安全处理请求参数,直接把请求参数原封不动 反射 响应页面中 为什么叫做一次性和非持久性?...2、插入自己想要的内容 3、插入最后一个引号,闭合另一个引号 然后 JS 使用 innerHTML 插入这个 a 标签 document.body.innerHTML='<a href="http:/...因为不知道用户的浏览器类型和 版本,所以需要识别浏览器,用于编写兼容的恶意脚本 <em>真的</em>恐怖,恶意脚本都要兼容 3、伪造请求。...而 脚本是很难破解 验证码的内容的,所以<em>这是</em>种很安全的方法。但是不排除可以暴力破解的方法 2、XSS 过滤。

    1K10

    真的分得清“前后左右”和“东西南北”?(四)——无处不在的相对方位

    在前面的文章里,我们从方向的本质参考系出发,介绍完了常用的地球球心参考系东南西北方位以及以人为参考系的前后左右方位,相关内容请戳: 你真的分得清“前后左右”和“东西南北”?...你真的分得清“前后左右”和“东西南北”?(二)——经纬度的秘密 你真的分得清“前后左右”和“东西南北”?(一)——以太阳还是地球当参考系?...这不,我们根据右手系建立起了人体相对坐标,自然地ox正方向的,规定为右,反之负方向,叫做左。但问题又来了,最开始,你都没有右手的定义,哪来的右手系呢?这是典型的鸡生蛋还是蛋生鸡的问题。...比如,为什么北方人指路用东西南北,南方人用前后左右? 北方地势较平坦,河流水道少,街道也往往是标准的纵横交错、东西分明;而南方多山地,河流水域间隔,地势崎岖,自然更倾向前后左右的方向认知。...车辆左右行的要求也直接影响了座驾的方位,按道理,右行车如果把座驾也安排在右侧,不是方便司机上下车?不然,之所以左侧,是为了靠右形式的车道上,靠左超车获得更好的视线,这比下车重要多了。

    1K10

    太菜了吧》(2)python中加号竟然如此善变

    小C:是的,C语言中会使用分号表示这一句代码结束,python中不需要添加任何表示结束的符号,直接写上代码的内容即可,也不需要其他额外的说明。 小媛:哇,挺简单的。...你想显示啥就直接丢到print函数的圆括号中即可,不需要添加别的。可能有些小伙伴会问,不是说使用print想显示什么就使用双引号将内容引起来放进去?...a="hello" print(a) 小媛:真的好简单。字符串一定需要使用引号引起来对吧?...小媛:当然是字符串了,刚刚你说的,使用双引号存起来的就是字符串呢,即使现在存的是 11,但是数字某种情况下不也是字符? 小C:哈哈哈,你理解得挺透彻的,是这个意思。那下面这个代码呢?...小C:那你将双引号去掉,换成如下代码再试试。 a=11 b=22 print(a+b) 小媛:这个加号不是起到连接作用为什么现在变成了数学计算?得到33了?

    35030

    Java String:重要到别人只能当老二的字符串类

    理论知识如果一直是绕弯弯,那真的毫无价值。如果要我来做面试官,我想要问的问题是:“你平常是怎么判断两个字符串相等的?是用equals()还是==?” 前言就说这么多。...这是为什么呢? StringJava中使用过于频繁,为了避免系统中产生大量的String对象,Java的设计者引入了“字符串常量池”的概念。...当使用双引号创建一个字符串时,首先会检查字符串常量池中是否有相同的字符串对象,如果有,则直接从常量池中取出对象引用;如果没有,则新建字符串对象,并将其放入字符串常量池中,并返回对象引用。...我们期望的结果是循环外部就创建StringBuilder,Java编译器能如我们所愿?...长按可添加好友

    51350
    领券