Java 从InputStreamReader将Json转换为gson
我从URL获得了一个JSON,它看起来像:|Java 从InputStreamReader将Json转换为gson,java,json,spring,gson,Java,Json,Spring,Gson,我从URL获得了一个JSON,它看起来像:| {"total_users_count":1, "users":[ {"first_name":"jan", "email":"admin@localhost", "city":null, "position":"", "experience_years":"5 - 8",
{"total_users_count":1,
"users":[
{"first_name":"jan",
"email":"admin@localhost",
"city":null,
"position":"",
"experience_years":"5 - 8",
"salary_expectations":"0 - 7300"}
// ,{ ... }
]
}
在这方面,将会有更多的用户。我的代码:
URLConnection urlConnection = url.openConnection();
urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc);
InputStream is = urlConnection.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
System.out.println(is.toString());
System.out.println(isr.toString());
CandidateDTO candidateDTO = new Gson().fromJson(isr, CandidateDTO.class);
// using the deserialized object
System.out.println(candidateDTO.total_users_count);
System.out.println(candidateDTO.first_name);
System.out.println(candidateDTO.email);
System.out.println(candidateDTO.city);
System.out.println(candidateDTO.position);
System.out.println(candidateDTO.experience_years);
System.out.println(candidateDTO.salary_expectations);
private class CandidateDTO {
int total_users_count;
Map <String, String> first_name;
String email;
String city;
String position;
Integer experience_years;
Integer salary_expectations;
}
URLConnection URLConnection=url.openConnection();
setRequestProperty(“授权”、“基本”+authStringEnc);
InputStream is=urlConnection.getInputStream();
InputStreamReader isr=新的InputStreamReader(is);
System.out.println(is.toString());
System.out.println(isr.toString());
CandidateDTO CandidateDTO=new Gson().fromJson(isr,CandidateDTO.class);
//使用反序列化对象
System.out.println(候选用户总数);
System.out.println(候选名字);
System.out.println(candidateDTO.email);
System.out.println(候选城市);
系统输出打印LN(候选职位);
系统输出打印(有三年工作经验);
System.out.println(符合薪资期望的候选人);
私人班级参选{
int总用户数;
地图名;
字符串电子邮件;
字符串城市;
串位置;
整年工作经验;
整数工资期望值;
}
不幸的是,此代码不起作用,我无法将用户添加到地图中。这个怎么了 您的DTO与您发布的json文档不匹配。有些数据类型甚至是错误的。像这样的东西应该有用
private CandidatesDTO {
int total_users_count;
List<CandidateDTO> users;
}
private class CandidateDTO {
String first_name;
String email;
String city;
String position;
String experience_years;
String salary_expectations;
}
您的DTO与您发布的json文档不匹配。有些数据类型甚至是错误的。像这样的东西应该有用
private CandidatesDTO {
int total_users_count;
List<CandidateDTO> users;
}
private class CandidateDTO {
String first_name;
String email;
String city;
String position;
String experience_years;
String salary_expectations;
}
用户是一个集合(对象数组),所以您需要创建这样的集合
public class CandidateDTO {
int total_users_count;
List<User> users = new ArrayList<User>();
//Set<User> users = new HashSet<User>();
}
public class User{
String first_name;
String email;
String city;
String position;
String experience_years;
String salary_expectations;
}
public类候选对象{
int总用户数;
列表用户=新建ArrayList();
//Set users=new HashSet();
}
公共类用户{
字符串名;
字符串电子邮件;
字符串城市;
串位置;
三年以上弦乐工作经验;
字符串期望值;
}
用户是一个集合(对象数组),因此您需要创建这样的集合
public class CandidateDTO {
int total_users_count;
List<User> users = new ArrayList<User>();
//Set<User> users = new HashSet<User>();
}
public class User{
String first_name;
String email;
String city;
String position;
String experience_years;
String salary_expectations;
}
public类候选对象{
int总用户数;
列表用户=新建ArrayList();
//Set users=new HashSet();
}
公共类用户{
字符串名;
字符串电子邮件;
字符串城市;
串位置;
三年以上弦乐工作经验;
字符串期望值;
}
users不是map而是array。我不熟悉GSON,但如果像Jackson那样工作,则需要将其指向“users”(即包含列表的子字符串)的值,或者提供一个映射到外部json对象的pojo(其中有一个名为users
的字段,具有适当的类型).users不是map而是array。我不熟悉GSON,但如果它像Jackson一样工作,则需要将其指向“users”的值(即包含列表的子字符串),或者提供一个映射到外部json对象的pojo(其中有一个名为users
的字段,具有适当的类型)。