メトセラ:
私は、次のJSON出力を取得しています:
{
"range": "Frontpage!E6:E15",
"majorDimension": "ROWS",
"values": [
[
"FundRequest"
],
[
"nOS"
],
[
"NEX"
],
[
"DREP"
],
[
"ChromaWay"
],
[
"Jura"
],
[
"Origo"
],
[
"Phantasma"
],
[
"NuCypher"
],
[
"Oasis Labs"
]
]
}
だから私は、次のラッパーを作成しました:
public class Wrapper {
private String range;
private String majorDimension;
private List<String> values;
// getters and setters
}
今、私は使用はしたいGsonBuilder
私のオブジェクトにJSONをマッピングするために:
Gson gson = new GsonBuilder().create();
Wrapper w = gson.fromJson(jsonString, Wrapper.class);
私は次のエラーを取得します:
java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 37 path $.values[0]
どのように私はそれを修正しますか?私はからそれを変換するためにどのような方法があるList<List<String>>
のではList<String>
?
VelNaga:
まず、あなたはリストを使用する必要がありますList<<List<String>>
代わりに、List<String>
値のため。
二、あなたが得ることができるList<String>
から、List<List<String>>
コードの下に使用して、
public <T> List<T> flattenListOfListsImperatively(
List<List<T>> nestedList) {
List<T> ls = new ArrayList<>();
nestedList.forEach(ls::addAll);
return ls;
}
またはJava-8を使用して
public <T> List<T> flattenListOfListsStream(List<List<T>> list) {
return list.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
}
また、GSONで検索を行うことが任意の組み込みの入れ子になったコレクションをフラット化する方法です。何がある場合はそれをここに投稿してください。
編集1:私はGSONライブラリでクイック検索を行なったし、possible.Youは、物事を達成するためのアダプタを書く必要がありそうです。この参照してくださいリンクを リンク2