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