0
我得到的JSON字符串这样的值:{Numbers: [10,20,30]}
,我想分析的价值为Numbers
,并将其保存为一个List
:以JSON字符串的值,并得到
[10,20,30]
做任何事情在番石榴这样做?不能使用除此之外的任何其他第三方库或内置的库。 (在Java 7上)。
我得到的JSON字符串这样的值:{Numbers: [10,20,30]}
,我想分析的价值为Numbers
,并将其保存为一个List
:以JSON字符串的值,并得到
[10,20,30]
做任何事情在番石榴这样做?不能使用除此之外的任何其他第三方库或内置的库。 (在Java 7上)。
不,但是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或其他库。
YOY你不能使用其他库? JSON确实应该嵌入到JDK中,但我猜测在这一点上,Oracle知道他们挑选的任何范例都会受到其他方案的游说者的恶毒批评。但是,构建任何没有JSON支持的半现代Java应用程序是不切实际的。 – 2014-10-01 21:23:21