戳蓝字「TopCoder」关注我们哦!
试想一个问题:如果我们已知Java对象的toString格式,想要获取其json格式或者其Java对象,该如何做呢?
注意:Java对象的toString格式目前没有规范规定其格式,毕竟可以自定义对象toString方法,不过一般情况下对象的toString的格式如下所示。通过toString获取Java对象的话,只要将toString转json后再通过
JSON.parseObject()
转成对象即可,现在剩下的问题就是toString转json了。
@Data
public class Person {
private String name = "张三";
private Integer age = 27;
}
toString: Person(name=张三, age=27)
在具体分析toString转json问题之前,我们首先来看下Java中常见的几种数据序列化格式吧,日常开发中接触到的对象格式主要分为以下两大类:
强类型格式:java Serializable、hession、Thrift、Protobuf等。
弱类型格式:json、xml等。
上述数据类型格式基本都对应至少1个序列化框架或工具,比如json序列化框架就包括fastjson、Jackson、Gson等。那么本文探讨的toString格式应该分为那种类型格式呢?
相信很多小伙伴心中都已有答案,没错,toString就是弱类型格式。那么针对上面提到的toString转json,换句话说,也就是toString反序列化为json,就可以参考类似json的反序列化机制来完成。
首先要明确的是,由于toString格式不统一,因此我们使用最常见的toString格式,也就是 Person(name=张三, age=27) 这种。toString转json步骤如下:
首先要将toString字符串解析成一个个token,token就是
key=value
这种格式,比如上述中的 "name=张三" 字符串,不管key和value是基本类型还是对象,都是一个token;<