【发布时间】:2014-08-14 12:57:11
【问题描述】:
我需要整合来自 json 的一些数据,我能够将 json 文件保存为字符串,但我无法读取我需要的格式。 从下面的 json 中,我需要获取名字和姓氏以将其保存在我的联系人类型的 java 对象中。
{
"form-submissions": [
{
"portal-id": 62515.0,
"page-title": "Testing!",
"title": "Test Form",
"timestamp": 1.33830544E12,
"conversion-id": "bc65112f47c2469e90f5951213a66110",
"page-url": "http: //www.example.com/test/Default.aspx?RewriteStatus\u003d1",
"page-id": "807831",
"form-id": "4320"
}
],
"identity-profiles": [
{
"identities": [
{
"timestamp": 1.33830544E12,
"type": "LEAD_GUID",
"value": "8a5c2ed0379938020137993893d40013"
},
{
"timestamp": 1.33830544E12,
"type": "EMAIL",
"value": "test@example.com"
}
],
"vid": 71.0
},
{
"identities": [],
"vid": 59.0
}
],
"properties": {
"lifecyclestage": {
"value": "lead",
"versions": [
{
"timestamp": 1.338305450005E12,
"selected": false,
"source-label": "None",
"value": "lead",
"source-type": "MIGRATION",
"source-id": "None"
}
]
},
"hs_analytics_first_timestamp": {
"value": "1337815228837",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "1337815228837",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
},
"hs_analytics_source_data_1": {
"value": "",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
},
"firstname": {
"value": "Test",
"versions": [
{
"timestamp": 1.338305440003E12,
"selected": false,
"source-label": "FirstName",
"value": "Test",
"source-type": "FORM",
"source-id": "bc65112f47c2469e90f5951213a66110"
}
]
},
"hs_analytics_last_url": {
"value": "http: //www.example.com/test/",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "http: //www.example.com/test/",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
},
"hs_analytics_source_data_2": {
"value": "",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
},
"lastname": {
"value": "Contact",
"versions": [
{
"timestamp": 1.338305440003E12,
"selected": false,
"source-label": "LastName",
"value": "Contact",
"source-type": "FORM",
"source-id": "bc65112f47c2469e90f5951213a66110"
}
]
},
"createdate": {
"value": "1338305440000",
"versions": [
{
"timestamp": 1.338305440003E12,
"selected": false,
"source-label": "None",
"value": "1338305440000",
"source-type": "FORM",
"source-id": "bc65112f47c2469e90f5951213a66110"
}
]
},
"hs_analytics_num_page_views": {
"value": "3",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "3",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
},
"hs_analytics_last_timestamp": {
"value": "1337815238097",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "1337815238097",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
},
"phone": {
"value": "555-555-2262",
"versions": [
{
"timestamp": 1.338305440003E12,
"selected": false,
"source-label": "Phone",
"value": "555-555-2262",
"source-type": "FORM",
"source-id": "bc65112f47c2469e90f5951213a66110"
}
]
},
"hs_analytics_last_referrer": {
"value": "http: //www.example.com/test",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "http: //www.example.com/test",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
},
"field_text_7": {
"value": "62515",
"versions": [
{
"timestamp": 1.338305440003E12,
"selected": false,
"source-label": "HubSpotPortal(Hub)ID",
"value": "62515",
"source-type": "FORM",
"source-id": "bc65112f47c2469e90f5951213a66110"
}
]
},
"hs_analytics_first_referrer": {
"value": "",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
},
"hs_analytics_first_url": {
"value": "http: //www.example.com/support/",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "http: //www.example.com/support/",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
},
"hs_analytics_num_visits": {
"value": "1",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "1",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
},
"field_text_9": {
"value": "test",
"versions": [
{
"timestamp": 1.338305440003E12,
"selected": false,
"source-label": "CustomFormQuestion",
"value": "test",
"source-type": "FORM",
"source-id": "bc65112f47c2469e90f5951213a66110"
}
]
},
"field_text_8": {
"value": "about20",
"versions": [
{
"timestamp": 1.338305440003E12,
"selected": false,
"source-label": "HowManyHubSpotUsers?",
"value": "about20",
"source-type": "FORM",
"source-id": "bc65112f47c2469e90f5951213a66110"
}
]
},
"ipaddress": {
"value": "71.172.15.18",
"versions": [
{
"timestamp": 1.338305440003E12,
"selected": false,
"source-label": "None",
"value": "71.172.15.18",
"source-type": "FORM",
"source-id": "bc65112f47c2469e90f5951213a66110"
}
]
},
"email": {
"value": "test@example.com",
"versions": [
{
"timestamp": 1.338305440003E12,
"selected": false,
"source-label": "Email",
"value": "test@example.com",
"source-type": "FORM",
"source-id": "bc65112f47c2469e90f5951213a66110"
}
]
},
"hs_analytics_source": {
"value": "DIRECT_TRAFFIC",
"versions": [
{
"timestamp": 1.337817901004E12,
"selected": false,
"source-label": "None",
"value": "DIRECT_TRAFFIC",
"source-type": "ANALYTICS",
"source-id": "None"
}
]
}
},
"vid": 71.0
}
我试图使用com.google.gson.Gson;直接匹配值但没有运气:
CrmContacts contact = gson.fromJson(jsonString, CrmContacts.class);
CrmContacts 类:
public class CrmContacts {
private String lastname;
private String firstname;
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
}
【问题讨论】:
-
firstname和lastname是 Object 而不是String。你在期待什么? -
你怎么可能自动映射这个...我建议你用 jsonPath 编写你自己的转换器..
-
@Jaiwo99 实际上,Gson 非常擅长将 JSON 自动映射到 Java。但是,这些对象并不真正匹配。 OP:如果您想继续使用 Gson,请帮助它了解如何解析您的 JSON。
-
@keyser 我没有说不可能自动将 json 映射到 java 对象,在他的情况下,将这个 json 映射到他期望的对象是不可能的......跨度>
-
@Jaiwo99 是的,我知道,我只是不想让 OP 得到错误的印象。你让他远离 Gson。