获取JSON字符串的值并获取值

时间:2014-10-01 20:30:42

标签: java json parsing guava

我得到了这样的JSON字符串:{Numbers: [10,20,30]}我要解析Numbers的值,并将其另存为List

[10,20,30]

番石榴有没有做到这一点?不能使用任何其他第三方库而不是内置的。 (在java 7上)。

1 个答案:

答案 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或其他库。

相关问题