Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中将JSON数组字符串转换为Set_Json_String_Java 8_Set - Fatal编程技术网

如何在java中将JSON数组字符串转换为Set

如何在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(","))

我有一个类似于[1,2]的JSON数组字符串。我想将其转换为Set。如何在java 8中实现这一点

这是我的密码

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());

请写下一些代码以便更好地理解。请提供一些您迄今为止尝试过的代码。添加了我迄今为止尝试过的代码。不要添加问题的答案。像回答另一个问题一样回答自己的问题,然后接受它