Разобрать JSON для объекта JAVA без Root - PullRequest
0 голосов
/ 08 декабря 2011

Ответ моего сервиса ALFRESCO REST:

[
{
"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"
}
]

И я хочу разобрать список объектов:

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;
}

Я думаю, что есть два решения:

  1. как добавить тег Членство в результат JSON для инкапсулятов целое.
  2. как разобрать результат JSON прямо в мой список

Спасибо

Ответы [ 4 ]

3 голосов
/ 08 декабря 2011

Как ответили в a-better-java-json-library Я бы использовал google-gson .

0 голосов
/ 13 декабря 2011

извините за не форматирование кода

Type targetType = new TypeToken<Collection<Memberships>>() {}.getType();
List<Memberships> list = (List<Memberships>)new Gson().fromJson(rendu,targetType);
0 голосов
/ 13 декабря 2011

Спасибо, Озоли. Ответ на мой вопрос:

Type targetType = new TypeToken<Collection<Memberships>>() {}.getType();
List<Memberships> list = (List<Memberships>)  new Gson().fromJson(renduJson,targetType);
0 голосов
/ 12 декабря 2011

Вы также можете использовать http://jsongen.byingtondesign.com/ для генерации java-кода из ответа json, а затем использовать библиотеку Джексона (http://jackson.codehaus.org/) для привязки этих данных ответа к вашему объекту (ам):

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("c:\\user.json"), User.class);
...