我计划使用XStream和Java在对象和XML请求以及XML响应和对象之间进行转换,其中XML通过HTTP / HTTPS流动。在响应方面,我可以得到一个“成功”的响应,看起来它会映射到一个Java类,或者一个“失败”响应,它似乎会映射到另一个Java类。
例如,对于“文件列表”请求,我可以得到肯定的回复,例如,
<?xml version="1.0" encoding="UTF-8"?>
<response>
<success>true</success>
<files>
<file>[...]</file>
<file>[...]</file>
<file>[...]</file>
</files>
</response>
或者我可以得到否定回答,例如,
<?xml version="1.0" encoding="UTF-8"?>
<response>
<success>false</success>
<error>
<errorCode>-502</errorCode>
<systemMessage>[...]AuthenticationException</systemMessage>
<userMessage>Not authenticated</userMessage>
</error>
</response>
要处理这个问题,我是否应该在一个类中包含两个字段的字段,还是应该以某种方式使用XStream“有条件地”创建两个潜在类中的一个?
同一对象中两个响应案例的字段的情况如下所示:
Class Response {
boolean success;
ArrayList<File> files;
ResponseError error;
[...]
}
Class File {
String name;
long size;
[...]
}
Class ResponseError {
int errorCode;
String systemMessage;
String userMessage;
[...]
}
我不知道“使用XStream并在成功或错误的情况下创建不同的对象”是什么样的。有可能以某种方式这样做吗?是好还是坏的方式去?
无论如何,任何有关如何处理使用XStream处理此成功与失败响应案例的建议都将受到赞赏。提前谢谢!
答案 0 :(得分:0)
我几年前曾短暂地使用过XStream,但是如果你想要两个不同的类,那么为什么两个案例中没有两个不同的根标签(例如成功和失败)?
如果您也使用XStream生成XML,那么这些类可以有一个公共基类或接口,如果需要在服务器端使用的话。
答案 1 :(得分:0)
在实际使用它时,我发现第一种情况(包括两个案例的一个类中的字段)似乎工作得很好,所以也许这就是要走的路。
在这种情况下,Response
的成功和不成功形式都会设置success
字段,如果不成功,则还会返回ResponseError
。
Class Response {
boolean success;
ArrayList<File> files;
ResponseError error;
[...]
}
Class File {
String name;
long size;
[...]
}
Class ResponseError {
int errorCode;
String systemMessage;
String userMessage;
[...]
}