我遇到了一个问题,java正在从数字或字符串的YAML文件中读取数组列表,并且如果它具有前导0而没有8-9位,则它将数字解释为八进制。
有没有办法强制java将yaml字段作为字符串读取?
代码:
ArrayList recordrarray = (ArrayList) sect.get("recordnum");
if (recordrarray != null) {
recno = join (recordrarray, " ");
}
还有人试过:
Iterator<String> iter = recordrarray.iterator();
if (iter.hasNext()) recno = " " +String.valueOf(iter.next());
System.out.println(" this recnum:" + recno);
while (iter.hasNext()){
recno += ""+String.valueOf(iter.next()));
System.out.println(" done recnum:" + String.valueOf(iter.next()));
}
输入是这样的: 061456更改为25390 061506更改为25414 061559 - &gt; FINE
需要一段时间来弄清楚它在做什么,显然这是java的常见问题,
想法? 谢谢
编辑:使用jvyaml
YAML:
22:
country_code: ' '
description: ''
insection: 1
recordnum:
- 061264
type: misc
yaml loading:
import org.jvyaml.YAML;
Map structure = new HashMap();
structure = (Map) YAML.load(new FileReader(structurefn)); // load the structure file
答案 0 :(得分:0)
你在哪里读文件?问题在于读取文件内容的位置。最喜欢的是recordarray
列表包含整数,即。他们已经解析了alreadey。找到正在读取记录的位置。也许你正在做这样的事情:
int val = Integer.parseInt(record);
请改用:
int val = Integer.parseInt(record, 10);