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

kos*_*lvp 4 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
   }
]
Run Code Online (Sandbox Code Playgroud)

如何将其转换为对象的 ArrayList?

Pra*_*tel 6

使用Gson

Gson gson = new Gson();
        ArrayList<Object> listFromGson = gson.fromJson("json string",
               new TypeToken<ArrayList<Object>>() {}.getType());
Run Code Online (Sandbox Code Playgroud)

使用杰克逊

    ObjectMapper mapper = new ObjectMapper();
    ArrayList<Object> listFromJackson = mapper.readValue("json string",
           new TypeReference<ArrayList<Object>>(){});
Run Code Online (Sandbox Code Playgroud)

如果你可以将 pojo 定义为

public class Example {

    private Integer id;
    private String title;
    private String description;
    private Integer userId;
    // setters / getters
}
Run Code Online (Sandbox Code Playgroud)

然后

ArrayList<Example> listFromGson = gson.fromJson("json string",
               new TypeToken<ArrayList<Example>>() {}.getType());

ArrayList<Example> listFromJackson = mapper.readValue("json string",
               new TypeReference<ArrayList<Example>>(){});
Run Code Online (Sandbox Code Playgroud)

另外,您应该更喜欢使用List而不是ArrayList.


Sud*_*jha 5

你需要声明一个 pojo

class Data{
  String id;
  String title;
  String description;
  String userId;
  //Generate setter an getter
}
Run Code Online (Sandbox Code Playgroud)

对 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);
    }
Run Code Online (Sandbox Code Playgroud)

您还需要 json jar。你可以从这里下载

  • 不要从海报提供的链接下载,而是使用 Maven 和合法来源:https://mvnrepository.com/artifact/org.json/json (2认同)