只是为了设置上下文,在JSP中,我们可以按如下方式访问对象的方法。
Class Student
public Object getXXXWhichNeedsFewLogic() {
// Logic to get obj, which i don't want to store as a variable in this class.
return obj;
}
如果我们将student对象传递给jsp,我们可以像
一样访问这个方法student.XXXWhichNeedsFewLogic
在Gson序列化期间是否可以实现相同的目标?最终输出json应包含值
{XXXWhichNeedsFewLogic:obj}
答案 0 :(得分:0)
下面是一个用于序列化方法结果的示例类。
public class GsonTest {
public static class Student {
public Object getXXXWhichNeedsFewLogic() {
return "foo";
}
}
public static class GetterSerializer<T> implements JsonSerializer<T> {
@Override
public JsonElement serialize(T src, Type typeOfSrc, JsonSerializationContext context) {
if (null == src) {
return new JsonNull();
}
JsonObject obj = new JsonObject();
for (Method m : src.getClass().getDeclaredMethods()) {
if (m.getName().startsWith("get") && m.getParameterCount() == 0) {
try {
obj.add(m.getName().substring(3), context.serialize(m.invoke(src)));
} catch (InvocationTargetException | IllegalAccessException e) {
}
}
}
return obj;
}
}
@Test
public void testSerialization() {
System.out.println(
new GsonBuilder()
.registerTypeAdapter(Student.class, new GetterSerializer<Student>())
.create()
.toJson(new Student()));
}