2017-03-01 8 views
-1

[1,2]のようなJSON配列文字列を持っています。これをSet.Howに変換したいのですが、Java 8でできますか?入力文字列の場合: "2"JSON配列文字列をJavaで設定する方法

JSON配列内のスペースがproblem.Isある

この

はこの

java.lang.NumberFormatExceptionのようなエラーを取得

String languageStr = rs.getString("languages"); 
jobseeker.setLanguageIds(StringUtils.isEmpty(languageStr) ? null 
        : Arrays.stream(languageStr.split(",")) 
        .map(Integer::parseInt) 
        .collect(Collectors.toSet())); 

私のコードです何か解決策がありますか?

これは変更

String languageStr = rs.getString("languages"); 
      String languages=languageStr.substring(1,languageStr.length()-1); 
      jobseeker.setLanguageIds(StringUtils.isEmpty(languages) ? null 
        : Arrays.stream(languages.split(",")) 
        .map(String::trim) 
        .map(Integer::parseInt) 
        .collect(Collectors.toSet())); 

後に私のコードでは、私はこれらの2つの手順を使用してwithot他の方法で出力を得ることができます。 言語= languageStr.substring(1、languageStr.length() - 1)。

の.map(文字列::トリム)

+0

理解を深めるためにいくつかのコードを書き留めてください。 –

+0

これまでに試したコードをいくつかご提供ください。 – VVN

+0

これまでに試したコードを追加しました –

答えて

0

あなたが前に、先頭と末尾withespaceを削除する整数にそれを解析するtrimメソッドを使用することができます。

だからあなたのコードは最後にこの

Arrays.stream(languageStr.split(",")) 
       .map(String::trim) 
       .map(Integer::parseInt) 
0

私は

変更されたコードこのようなソリューションだようになります。

String languageStr = rs.getString("languages"); 

Set<Integer> languages = mapper.readValue(languageStr, typeFactory.constructCollectionType(Set.class, Integer.class)); 

jobseeker.setLanguageIds(StringUtils.isEmpty(languageStr) ? null : languages); 
0

TypeTokenとGoogle Gsonライブラリを使用して、あなたがする必要があります以下のようにすることができます:

String languageJsonStr = rs.getString("languages");  
Set<Integer> myLanguageSet = new Gson().fromJson(languageJsonStr, new TypeToken<HashSet<Integer>>(){}.getType()); 
関連する問題