Java JAXB解组未知问题
我使用JAXB解压xml,但它突然返回了错误的值,返回了错误的值。前一天,它运转良好 节点:Java JAXB解组未知问题,java,xml-serialization,jaxb,Java,Xml Serialization,Jaxb,我使用JAXB解压xml,但它突然返回了错误的值,返回了错误的值。前一天,它运转良好 节点: 166 解组代码为: public class ResponseParser { static Object obj; public static Object parseResponse(String response, Class<?> ctxClass) { try { ByteArrayInputStream input = new ByteArrayInp
166
解组代码为:
public class ResponseParser {
static Object obj;
public static Object parseResponse(String response, Class<?> ctxClass) {
try {
ByteArrayInputStream input = new ByteArrayInputStream(response.getBytes());
JAXBContext jc = JAXBContext.newInstance (ctxClass);
Unmarshaller unmarshaller = jc.createUnmarshaller();
obj = unmarshaller.unmarshal(input);
}
catch (JAXBException e) {
}
return obj;
}
}
公共类响应器{
静态对象对象;
公共静态对象parseResponse(字符串响应,类ctxClass){
试一试{
ByteArrayInputStream输入=新建ByteArrayInputStream(response.getBytes());
JAXBContext jc=JAXBContext.newInstance(ctxClass);
Unmarshaller Unmarshaller=jc.createUnmarshaller();
obj=解组器。解组器(输入);
}
捕获(JAXBEException e){
}
返回obj;
}
}
它正在返回:-90
。但是它正在按顺序返回,就像以前的-90
一样,它是-91
请帮忙 您所面临的情况非常奇怪,但是可能与xml文件编码有关。试着换电话
ByteArrayInputStream input = new ByteArrayInputStream(response.getBytes());
到
让我们知道这是否是您问题的真正原因。您所面临的情况非常奇怪,但是可能与xml文件编码有关。试着换电话
ByteArrayInputStream input = new ByteArrayInputStream(response.getBytes());
到
让我们知道这是否是问题的真正原因。输入的
166
超出了byte
的范围,该范围在Java中是127
的最大值
package forum9632269;
public class Demo {
public static void main(String[] args) throws Exception {
System.out.println(Byte.MAX_VALUE);
}
}
输出
127
输入的
166
超出了byte
的范围,在Java中,字节的最大值为127
package forum9632269;
public class Demo {
public static void main(String[] args) throws Exception {
System.out.println(Byte.MAX_VALUE);
}
}
输出
127
您是否通过调试器运行了代码,并确保传递到解组器的是什么?因此
response
是“166”,当您使用JAXB解组时,您得到了-90(或任何其他序列号)?什么类型的obj是obj
?也许你可以尝试使用一个具体的类而不是通用的通配符?是的,回答是“166”。obj是对象类型。它是工作文件,应用程序已经准备好了,但我不知道突然发生了什么。@TusharAgarwal-我不知道输入值166
与输出有什么关系。你为什么期望-90
?@BlaiseDoughan我没有期望-90
我需要节点
中的值116
,但它返回的是-90
。你是否通过调试器运行了你的代码,并确保准确地传递到解组器中的是什么?因此响应
是“166”当您使用JAXB解组时,会得到-90(或任何其他序列号)?什么类型的obj是obj
?也许你可以尝试使用一个具体的类而不是通用的通配符?是的,回答是“166”。obj是对象类型。它是工作文件,应用程序已经准备好了,但我不知道突然发生了什么。@TusharAgarwal-我不知道输入值166
与输出有什么关系。你为什么期待-90
?@BlaiseDoughan我不期待-90
我需要节点
中的值116
,但它会返回-90
。@TusharAgarwal-我已经根据你添加到问题中的评论更新了我的答案。问题是值166
超出了字节
数据类型的范围。@TusharAgarwal-我已根据您添加到问题中的注释更新了我的答案。问题是值166
超出了字节
数据类型的范围。