序列化..字符串到POJO

时间:2011-05-10 18:12:53

标签: java

我需要将此String转换为POJO。请告诉我我该怎么办

这只是一个例子

Anne12F02PhysicsPassChemistryPassFirstClass

这是字符串..现在我需要将其转换为pojo

我的POJO看起来像这样

Class student {     
    String Name;
    int age;
    char sex;
    List<Subject> subList;
    String classiness;
}

Class subject {
    String subject;
    String result;
}

这只是一个例子。

字符串中的

02表示列表的大小。

注意:: 并且每个属性的长度也是预定义的(例如..名称10个字符..如果名称中只有5个字符,则附加空格)

列表可能会再次包含一个列表,长度将显示

3 个答案:

答案 0 :(得分:0)

您需要在String上使用substring来获取所有不同的元素。然后,您需要使用Integer.parseInt和类似的函数将字符串转换为您需要的类型,然后最后使用计算的变量构造您的POJO。

此外,如果其中一个元素是一个列表(它是),那么您将需要创建一个ArrayList并添加每个元素,具体取决于需要解析的列表的大小。

因此,样本将是(假设您的输入字符串被称为toPojo

String name = toPojo.substring(0, 10);
int age = Integer.parseInt(toPojo.substring(10, 12));

由于这是家庭作业,请尝试完成休息......

编辑:跟进

获取列表,执行类似

的操作
// get size of list and loop from zero to the size of the list
// find the index of the first item in the list
// int index = startIndex + loop*itemLength
// toPojo.substring(index, index+sizeOfElement);

答案 1 :(得分:0)

如果预定义了属性的长度,则可以使用方法String.substring(int, int)检索每个属性,然后从解析的值中创建POJO。类似于以下代码片段:

String input = "Anne12F02PhysicsPassChemistryPassFirstClass";

String name = input.substring(0, NAME_LENGTH); // name length is predefined
String age = input.substring(NAME_LENGTH, NAME_LENGTH + AGE_LENGTH);

// and so on

Student s = new Student(name, Integer.parseInt(age));

答案 2 :(得分:0)

如果你的字符串有可变长度,你可能想在字符串本身之前写字符串长度,或者在字段之间使用一些分隔符,比如逗号或管道字符。