Java 将用户定义的对象转换为字符串对象
比如说,我有一个用户定义的类Java 将用户定义的对象转换为字符串对象,java,string,object,Java,String,Object,比如说,我有一个用户定义的类 import java.util.Calendar; public class Employee{ private String name; private int age; private Calendar dob; private Address address; private boolean married; public String getName() { return name;
import java.util.Calendar;
public class Employee{
private String name;
private int age;
private Calendar dob;
private Address address;
private boolean married;
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 Calendar getDob() {
return dob;
}
public void setDob(Calendar dob) {
this.dob = dob;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public boolean isMarried() {
return married;
}
public void setMarried(boolean married) {
this.married = married;
}
}
class Address{
private int doorNo;
private String streetName;
private String city;
public int getDoorNo() {
return doorNo;
}
public void setDoorNo(int doorNo) {
this.doorNo = doorNo;
}
public String getStreetName() {
return streetName;
}
public void setStreetName(String streetName) {
this.streetName = streetName;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
我正在创建Employee的对象并用setter填充它。我必须将上面的对象表示为字符串(加密的或人类可读的),然后重新解析以获得类似的对象。实际上,我想将java对象的字符串等价物保存在一个文件中,并读回它们以获得java对象。我知道我们有对象写入,但它们对编辑很敏感。我更喜欢java对象是否可以转换为人类可读形式的字符串。谢谢。您应该重写
toString()
以将类的实例转换为字符串。至于根据实例的字符串表示形式重新创建实例,您可以为此定义一个静态工厂方法
public class Employee {
...
@Override
public String toString() {
...
}
public static Employee fromString(String str) {
...
}
}
您可以这样使用这些方法:
要获取实例到字符串的字符串表示形式,请执行以下操作:
Employee john = ...
String johnString = john.toString();
请注意,每当需要获取其中一个实例的字符串表示形式时,也会隐式调用toString()
方法
要从字符串重新创建实例,请执行以下操作:
Employee john = Employee.fromString(johnString);
如果您经常需要将类的实例存储在文件中并读取它们,也可以考虑序列化。有关接口以及和,请参阅文档。您可能还想通过阅读中的最后一章(“序列化”),熟悉有关序列化的注意事项。最重要的是,请注意,类的序列化形式将成为公共API的一部分。
您应该重写toString()
以将类的实例转换为字符串。至于根据实例的字符串表示形式重新创建实例,您可以为此定义一个静态工厂方法
public class Employee {
...
@Override
public String toString() {
...
}
public static Employee fromString(String str) {
...
}
}
您可以这样使用这些方法:
要获取实例到字符串的字符串表示形式,请执行以下操作:
Employee john = ...
String johnString = john.toString();
请注意,每当需要获取其中一个实例的字符串表示形式时,也会隐式调用toString()
方法
要从字符串重新创建实例,请执行以下操作:
Employee john = Employee.fromString(johnString);
如果您经常需要将类的实例存储在文件中并读取它们,也可以考虑序列化。有关接口以及和,请参阅文档。您可能还想通过阅读中的最后一章(“序列化”),熟悉有关序列化的注意事项。最重要的是,请注意,类的序列化形式将成为公共API的一部分。
您可能正在寻找以下方法: 返回对象的字符串表示形式。总的来说 toString方法返回一个字符串,该字符串“以文本形式表示”此 对象结果应该是简洁但信息丰富的表示 这对一个人来说很容易阅读。建议所有 子类重写此方法 在您的情况下,您将做类似的事情(添加到每个类中): 字符串可以是您想要的任何格式。要保存对象,只需将toString方法返回的文本写入文件 然而,要读回它们,您必须实现自己的逻辑。另一方面,您可以做的是使用(指令)之类的东西来自动将对象转换为XMLXML是人类可读的,因此用户可以根据需要修改任何内容。完成此操作后,您可以重新使用XStream读回您的对象。您可能正在寻找以下方法: 返回对象的字符串表示形式。总的来说 toString方法返回一个字符串,该字符串“以文本形式表示”此 对象结果应该是简洁但信息丰富的表示 这对一个人来说很容易阅读。建议所有 子类重写此方法 在您的情况下,您将做类似的事情(添加到每个类中): 字符串可以是您想要的任何格式。要保存对象,只需将toString方法返回的文本写入文件 然而,要读回它们,您必须实现自己的逻辑。另一方面,您可以做的是使用(指令)之类的东西来自动将对象转换为XML
XML是人类可读的,因此用户可以根据需要修改任何内容。一旦完成这一操作,就可以重新使用XString来读取对象。< P>让扁平化的对象保持可读性和可手工编辑性,考虑使用一个流行的JSON库将对象编码成JSON字符串。同一个JSON库还将为您提供API,用于将JSON字符串解码到您的对象中
流行的JSON库之一是。下面是一个使用例子:让你扁平化的对象可读和手工编辑,考虑使用一个流行的JSON库将你的对象编码成JSON字符串。同一个JSON库还将为您提供API,用于将JSON字符串解码到您的对象中 流行的JSON库之一是。下面是一个使用示例:试试这个
Employee em = new Employee;
//Your code
str obj= JavaScriptSerializer.Serialize();
// whenever you want to get object again
Employee emp = (Employee)JavaScriptSerializer.Deserialize();
试试这个
Employee em = new Employee;
//Your code
str obj= JavaScriptSerializer.Serialize();
// whenever you want to get object again
Employee emp = (Employee)JavaScriptSerializer.Deserialize();
你需要的是序列化..JSON是你的出路,请检查下面的示例代码我的答案。谢谢大家!我把所有答案都投了赞成票!感谢您的热烈响应。您需要的是序列化..JSON是您的出路,请检查下面的示例代码我的答案。谢谢大家!我把所有答案都投了赞成票!感谢您的热烈响应。toString()方法可以表示一个对象,但是可以读回它们吗?此外,我还有Calendar对象和另一个用户定义的对象。所以很难实现我们自己的方法。是否有可用的API来执行此操作?非常感谢。对于从字符串表单重新创建实例,我建议使用静态工厂方法
fromString()
。我已经添加了如何使用这两种方法的演示。对于日历实例,您可以根据toString()
生成的字符串中存储的内容重新创建它们(您必须输入足够的信息以允许