0

The response of my service ALFRESCO REST is:

[
{
"role": "SiteManager",
"authority":
{
    "authorityType": "USER",
    "fullName": "admin",
    "userName": "admin",
    "firstName": "Administrator",
    "lastName": "",
    "url": "\/alfresco\/service\/api\/people\/admin"
},
"url": "\/alfresco\/service\/api\/sites\/test3\/memberships\/admin"
}
,
{
"role": "SiteConsumer",
"authority":
{
    "authorityType": "GROUP",
    "shortName": "jamalgg",
    "fullName": "GROUP_jamalgg",
    "displayName": "jamalgg",
    "url": "\/alfresco\/service\/api\/groups\/jamalgg"
},
"url": "\/alfresco\/service\/api\/sites\/test3\/memberships\/GROUP_jamalgg"
}
,
{
"role": "SiteManager",
"authority":
{
    "authorityType": "GROUP",
    "shortName": "ALFRESCO_ADMINISTRATORS",
    "fullName": "GROUP_ALFRESCO_ADMINISTRATORS",
    "displayName": "ALFRESCO_ADMINISTRATORS",
    "url": "\/alfresco\/service\/api\/groups\/ALFRESCO_ADMINISTRATORS"
},
"url": "\/alfresco\/service\/api\/sites\/test3\/memberships\/GROUP_ALFRESCO_ADMINISTRATORS"
}
]

And I want to parse to list of object:

List<Memberships > listMemberships;

public class Memberships {
private String role;
private List<Authority> listAuthority ;
private String url;
}
public class Authority {
private String  authorityType;
private String  shortName;
private String  fullName;
private String  displayName;
private String  url;
}

I think that there are two solutions:

  1. how to add the tag Memberships to JSON result for encapsulates the whole.
  2. how to parse JSON result directly to my list

Thanks

César
  • 9,939
  • 6
  • 53
  • 74

4 Answers4

4

As answered in a-better-java-json-library I would use the google-gson library.

Community
  • 1
  • 1
ozOli
  • 1,414
  • 1
  • 18
  • 26
  • and there is even a example here: http://stackoverflow.com/questions/1688099/converting-json-to-java/1688182#1688182 – ozOli Dec 08 '11 at 15:23
1

Thank you Ozoli. The answer to my question is:

Type targetType = new TypeToken<Collection<Memberships>>() {}.getType();
List<Memberships> list = (List<Memberships>)  new Gson().fromJson(renduJson,targetType);
eeerahul
  • 1,629
  • 4
  • 27
  • 38
0

You can also use http://jsongen.byingtondesign.com/ to generate java code from json response and then use jackson library ( http://jackson.codehaus.org/ ) to bind that response data to your object(s):

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("c:\\user.json"), User.class);
Matjaz Muhic
  • 5,328
  • 2
  • 16
  • 34
0

sorry for not formatting code

Type targetType = new TypeToken<Collection<Memberships>>() {}.getType();
List<Memberships> list = (List<Memberships>)new Gson().fromJson(rendu,targetType);