如何将JSON字符串转换为对象的Arraylist

时间:2018-05-16 12:23:09

标签: java json arraylist

我有从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?

4 个答案:

答案 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);