解析 JSON 为对象 JAVA,无需 Root

发布于 2024-12-20 08:38:52 字数 1558 浏览 4 评论 0原文

我的服务 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. 如何将标签 Memberships 添加到 JSON 结果用于封装 整体。
  2. 如何将 JSON 结果直接解析到我的列表

谢谢

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

别理我 2024-12-27 08:38:52

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

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

兔姬 2024-12-27 08:38:52

谢谢奥佐利。我的问题的答案是:

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

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);
-柠檬树下少年和吉他 2024-12-27 08:38:52

您还可以使用 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);

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);
悸初 2024-12-27 08:38:52

抱歉没有格式化代码

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

sorry for not formatting code

Type targetType = new TypeToken<Collection<Memberships>>() {}.getType();
List<Memberships> list = (List<Memberships>)new Gson().fromJson(rendu,targetType);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文