gpt4 book ai didi

java - Gson 通过对象模型解析文本/纯文本不隔离字段但打印所有

转载 作者:行者123 更新时间:2023-11-30 07:51:24 25 4
gpt4 key购买 nike

我有一个包含 json 数据的字符串,格式为 text/plain,由 Web 响应返回。我试图通过 Google 的 Gson 库从 ma​​il 键获取特定值。但是,在谷歌中遵循了一些示例之后,我仍然无法获得邮件的值(value)。相反,它返回字符串中包含的所有数据。

public class EmailData {
public String mail;

public String getMail() {
return mail;
}
}

通过链接返回的响应具有 ff (text/plain)。这是浏览器和控制台上显示的内容。

{
"search": {
"entry": [
{
"dn": "uid=C12345678,c=ph,ou=pages,o=website.com",
"attribute": [
{
"name": "mail",
"value": [
"myemail123@website.com"
]
},
{
"name": "employeecountrycode",
"value": [
"818"
]
},
{
"name": "dept",
"value": [
"ABC"
]
}
],
"return": {
"code": 0,
"message": "Success",
"count": 1
}
}
]
}
}

我只想获得 mail 的值,即 myemail123@website.com

所以我尝试的是这个。

public class Test {

public static void main(String[] args) {
String linkReturningJsonTextPlain = "http://....";
try (WebClient webClient = new WebClient();){
Page page = webClient.getPage(linkReturningJsonTextPlain);
WebResponse response = page.getWebResponse();
String jsonString = response.getContentAsString();
Gson gson = new Gson();
EmailData emailData = gson.fromJson(jsonString, EmailData.class);
System.out.println(emailData.getMail());

} catch (Exception e) {
e.printStackTrace();
}
}

我得到了 jsonString 中包含的所有数据,而不仅仅是 myemail123@website.com

我做错了什么?我遵循了所有示例。我在打印 response.getContentType()

时得到 text/plain

我现在的最后一个选择是对 json 字符串进行手动拆分和子字符串化。

谢谢。

最佳答案

在您的 json 格式中,您无法将 EmailData 类转换回来。 json 格式应为 {"mail":"mail@example.com"}

考虑代码:

EmailData 类。

package gson;

public class EmailData {

private String mail;

public String getMail() {
return mail;
}

public void setMail(String mail) {
this.mail = mail;
}

@Override
public String toString() {
return "EmailData{" +
"mail='" + mail + '\'' +
'}';
}
}

展示Gson如何转换的测试类

package gson;

import com.google.gson.Gson;

public class Test {

public static void main(String[] args) {

Gson gson = new Gson();

EmailData emailData = new EmailData();
emailData.setMail("mail@example.com");

String toJson = gson.toJson(emailData);

System.out.println("toJson = " + toJson);

EmailData fromJson = gson.fromJson(toJson, EmailData.class);
System.out.println("fromJson = " + fromJson);
}
}

在此示例中,我将 EmailData 类转换为 json 并返回。为了解决您的问题,我建议您使用正则表达式或 Json 来提取电子邮件,如本文所示 How to parse JSON并通过构造函数手动创建一个 EmailData 类。

关于java - Gson 通过对象模型解析文本/纯文本不隔离字段但打印所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47130327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com