gpt4 book ai didi

java - 整数解码列表不正确

转载 作者:行者123 更新时间:2023-12-04 04:45:34 24 4
gpt4 key购买 nike

我的代码运行良好有一段时间。我改变了一些东西,现在我有一些不能正确解码的整数列表。为了尝试消除问题,我将整个事情归结为以下问题,但问题仍然存在。

我已将我的 XML 文件缩减为一个测试文件,其全部内容为

<polylist>
<p>1 0 0 0 0 1 2 0 2 3 1 3 1 1 4 2 1 5</p>
</polylist>

我已将我的 Java 代码缩减为一个测试文件,其中的全部内容是
import java.io.File;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "polylist")
public class PolyList
{
public List<Integer> p;

public static void main(String[] args) throws Exception
{
JAXBContext jaxbContext = JAXBContext.newInstance(PolyList.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
PolyList pl = (PolyList)unmarshaller.unmarshal(new File("ptest.xml"));
System.out.println(pl.p);
}
}

打印 pl.p 导致输出 [1291596391]这不是 [1 0 0 0 0 1 2 ...]这是预料之中的。如果我改变 public List<Integer> p;public List<String> p;然后它正确输出 [1 0 0 0 0 1 2 0 2 3 1 3 1 1 4 2 1 5]正如预期的那样。所以它正确地获得了 List<String>但不是 List<Integer> .它工作正常,正确获得 List<Integer>几天前在完整的生产项目中,但现在没有了。

(编辑)
实际上, List<String>版本也不工作。数字之间没有逗号,这意味着它没有显示多个字符串的列表,每个字符串代表不同的数字。相反,它仍然是代表整个事物的 1 个字符串。

谢谢你,Blaise,你指出了这一点。我的错误没有早点注意到它。

最佳答案

您应该使用 @XmlList p上的注释 field 。

@XmlList
public List<Integer> p;

更新

以下是正确的,我将不得不进一步调查原因。
javax.xml.bind.DatatypeConverter.parseInt("1 0 0 0 0 1 2 0 2 3 1 3 1 1 4 2 1 5") == 1291596391

If I change public List p; to public List p; then it correctly outputs [1 0 0 0 0 1 2 0 2 3 1 3 1 1 4 2 1 5] as expected.



如果你把它改成 List<String>你会得到一个 List其中一个条目是 1 0 0 0 0 1 2 0 2 3 1 3 1 1 4 2 1 5 .与 @XmlList注释您将获得 [1, 0, 0, 0, 0, 1, 2, 0, 2, 3, 1, 3, 1, 1, 4, 2, 1, 5] 的输出表示它是 List与许多项目。

关于java - 整数解码列表不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com