-3

Hi I want to generate json object from my array list. sample table:

id      user_id     name        group_id
1       1           user1       1
2       2           user2       1
3       3           user3       2
4       4           user4       3
5       5           user5       2

Then the way i get this record is:

List<User> userList = dao.getUsers();
for(User user:userList){

        JSONObject userJson = new JSONObject();
        userJson.put("user_id", user.getId());
        userJson.put("name", user.getName());
        userArr.put(userJson);

        results.put("group_id", user.getGroup_id());
        results.put("users", userArr);
        resultArr.put(results);
}

result of above code:

[{
    "group_id": 2,
    "users": [
        {
            "user_id": 1,
            "name": "user1"
        },
        {
            "user_id": 2,
            "name": "user2"
        }
    ]
}]

My goal is to get all the records the output it as json like sample below

{
            results:[
            {
                "group_id":1,
                "users":[
                    {"user_id": 1, "name":"user1" },
                    {"user_id": 2, "name":"user2" }
                ]
            },
            {
                "group_id":2,
                "users":[
                    {"user_id": 3, "name":"user3" },
                    {"user_id": 5, "name":"user5" }
                ]
            },
            {
                "group_id":3,
                "users":[
                    {"user_id": 4, "name":"user4"}
                ]
            }
            ]
        }

UPDATES: need to group it by group_id

Thanks

Cris
  • 437
  • 2
  • 5
  • 15

1 Answers1

1

You can easily use Gson for that:

import com.google.gson.Gson;
...
List<User> userList = dao.getUsers();
System.out.println(new Gson().toJson(userList));
sr2fx
  • 36
  • 3