我有从HTTP请求收到的JSON字符串:
[
{
"id":15,
"title":"1",
"description":"desc",
"user_id":152
},
{
"id":18,
"title":"2",
"description":"desc",
"user_id":152
},
{
"id":19,
"title":"tab3",
"description":"zadanka",
"user_id":152
} ]
如何将其转换为对象的ArrayList?
答案 0 :(得分:2)
你需要声明一个pojo
class Data{
String id;
String title;
String description;
String userId;
//Generate setter an getter
}
对json的迭代如下:
JSONArray jsonArr = new JSONArray("[your JSON Stirng]");
List<Data> dataList = new ArrayList<Data>();
for (int i = 0; i < jsonArr.length(); i++) {
JSONObject jsonObj = jsonArr.getJSONObject(i);
Data data = new Data();
data.setId(jsonObj.getString("id"));
data.setTitle(jsonObj.getString("title"));
data.setDescription(jsonObj.getString("description"));
data.setUserId(jsonObj.getString("user_id"));
dataList.add(data);
}
你还需要json jar。您可以从here
下载答案 1 :(得分:1)
使用Gson
Gson gson = new Gson();
ArrayList<Object> listFromGson = gson.fromJson("json string",
new TypeToken<ArrayList<Object>>() {}.getType());
使用杰克逊
ObjectMapper mapper = new ObjectMapper();
ArrayList<Object> listFromJackson = mapper.readValue("json string",
new TypeReference<ArrayList<Object>>(){});
如果你可以将pojo定义为
public class Example {
private Integer id;
private String title;
private String description;
private Integer userId;
// setters / getters
}
然后
ArrayList<Example> listFromGson = gson.fromJson("json string",
new TypeToken<ArrayList<Example>>() {}.getType());
ArrayList<Example> listFromJackson = mapper.readValue("json string",
new TypeReference<ArrayList<Example>>(){});
此外,您应该更喜欢使用List
而不是ArrayList
。
答案 2 :(得分:1)
如果您正在使用RestApi,请在您的pojo类中使用注释@RequestBody。
@RequestMapping(value="/your api name", method=RequestMethod.POST)
public ResponseData createUser(@RequestBody MyPojo myPojo){
System.out.println("Creating User "+myPojo.toString());
//Here you will able to access your request data from myPojo object
}
制作你的pojo课程:
public class MyPojo
{
private Data[] data;
public Data[] getData ()
{
return data;
}
public void setData (Data[] data)
{
this.data = data;
}
@Override
public String toString()
{
return "ClassPojo [data = "+data+"]";
}
}
public class Data
{
private String id;
private String title;
private String description;
private String user_id;
public String getId ()
{
return id;
}
public void setId (String id)
{
this.id = id;
}
public String getTitle ()
{
return title;
}
public void setTitle (String title)
{
this.title = title;
}
public String getDescription ()
{
return description;
}
public void setDescription (String description)
{
this.description = description;
}
public String getUser_id ()
{
return user_id;
}
public void setUser_id (String user_id)
{
this.user_id = user_id;
}
@Override
public String toString()
{
return "ClassPojo [id = "+id+", title = "+title+", description = "+description+", user_id = "+user_id+"]";
}
}
答案 3 :(得分:0)
除了@Sudhir,我还是建议使用Gson
Gson gson = new GsonBuilder().create();
Data p = gson.fromJson(jsonString, Data.class);
// Or to array.
Data[] data = gson.fromJson(jsonString, Data[].class);