如何在java中将JSON数组字符串转换为Set
我有一个类似于[1,2]的JSON数组字符串。我想将其转换为Set。如何在java 8中实现这一点 这是我的密码如何在java中将JSON数组字符串转换为Set,json,string,java-8,set,Json,String,Java 8,Set,我有一个类似于[1,2]的JSON数组字符串。我想将其转换为Set。如何在java 8中实现这一点 这是我的密码 String languageStr = rs.getString("languages"); jobseeker.setLanguageIds(StringUtils.isEmpty(languageStr) ? null : Arrays.stream(languageStr.split(","))
String languageStr = rs.getString("languages");
jobseeker.setLanguageIds(StringUtils.isEmpty(languageStr) ? null
: Arrays.stream(languageStr.split(","))
.map(Integer::parseInt)
.collect(Collectors.toSet()));
得到这样的错误
java.lang.NumberFormatException:用于输入字符串:“2”
json数组中的空间是问题所在。有什么解决方案吗
这是我修改后的代码
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()));
我是否可以不使用以下两个步骤以任何其他方式获得输出:
languages=languageStr.substring(1,languageStr.length()-1)
.map(String::trim)您可以使用
trim
方法在将其解析为整数之前删除带空格的前导和尾随
所以你的代码是这样的
Arrays.stream(languageStr.split(","))
.map(String::trim)
.map(Integer::parseInt)
我终于找到了解决办法 更改代码如下:
String languageStr = rs.getString("languages");
Set<Integer> languages = mapper.readValue(languageStr, typeFactory.constructCollectionType(Set.class, Integer.class));
jobseeker.setLanguageIds(StringUtils.isEmpty(languageStr) ? null : languages);
stringlanguagestr=rs.getString(“语言”);
Set languages=mapper.readValue(languageStr,typeFactory.constructioncollectiontype(Set.class,Integer.class));
jobseeker.SetLanguageId(StringUtils.isEmpty(languageStr)?null:语言);
使用TypeToken和Google Gson库,您应该可以像下面这样做:
String languageJsonStr = rs.getString("languages");
Set<Integer> myLanguageSet = new Gson().fromJson(languageJsonStr, new TypeToken<HashSet<Integer>>(){}.getType());
String language jsonstr=rs.getString(“语言”);
Set myLanguageSet=new Gson().fromJson(languageJsonStr,new TypeToken(){}.getType());
请写下一些代码以便更好地理解。请提供一些您迄今为止尝试过的代码。添加了我迄今为止尝试过的代码。不要添加问题的答案。像回答另一个问题一样回答自己的问题,然后接受它