我得到了这样的JSON字符串:{Numbers: [10,20,30]}
我要解析Numbers
的值,并将其另存为List
:
[10,20,30]
番石榴有没有做到这一点?不能使用任何其他第三方库而不是内置的。 (在java 7上)。
答案 0 :(得分:1)
不,但是gson确实如此。声明类似
的类class C {
private List<Integer> Numbers;
}
呼叫
new Gson().fromJson(s, C.class);
你已经完成了。
然而,这不是很好。该列表应该被称为小写numbers
,也许它应该是一个数组。对于前者,请查看FieldNamingStrategy,AFAIK的工作应该简单地将其声明为int[] numbers
。
很抱歉没有正确阅读问题。这个简单的事情可以用正则表达式和番石榴处理几行:
private static final Pattern PATTERN =
Pattern.compile("\\{Numbers:\\[([\\d, ]+)\\]\\}");
List<Integer> parse(String input) {
input = CharMatcher.WHITESPACE.removeFrom(input);
final Matcher matcher = PATTERN.matcher(input);
checkArgument(matcher.matches());
input = matcher.group(1);
final Iterable<String> split = Splitter.on(',').split(input);
final List<Integer> result = Lists.newArrayList();
for (final String s : split) result.add(Integer.parseInt(s));
return result;
}
它有效,但你真的不应该试图避免库,以防它变得更复杂。 JSON非常灵活,手动处理它需要编写适当的解析器并处理对象创建等等,这意味着重新实现Gson或其他库。