在没有Root的情况下将JSON解析为对象JAVA

时间:2011-12-08 15:02:53

标签: json alfresco xstream

我的服务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结果直接解析到我的列表
  3. 由于

4 个答案:

答案 0 :(得分:3)

正如a-better-java-json-library中的回答,我会使用google-gson库。

答案 1 :(得分:0)

您还可以使用http://jsongen.byingtondesign.com/从json响应生成java代码,然后使用jackson库(http://jackson.codehaus.org/)将响应数据绑定到您的对象:

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

答案 2 :(得分:0)

谢谢Ozoli。我的问题的答案是:

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

答案 3 :(得分:0)

抱歉没有格式化代码

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