如何在Java中读取Json字符串
我需要集成一些来自json的数据,我能够将json文件保存为字符串,但我无法读取我需要的格式。 从下面的json中,我需要获得firstname和lastname,以便将其保存在Contact类型的java对象上如何在Java中读取Json字符串,java,json,Java,Json,我需要集成一些来自json的数据,我能够将json文件保存为字符串,但我无法读取我需要的格式。 从下面的json中,我需要获得firstname和lastname,以便将其保存在Contact类型的java对象上 { "form-submissions": [ { "portal-id": 62515.0, "page-title": "Testing!", "title": "Test Form", "timestamp": 1.33
{
"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;
}
}
您需要将JSON字符串的精确副本创建到Java POJO类或
Map
下面是从
properties
获取firstname
和lastname
的简单代码
Type type = new TypeToken<Map<String, Object>>() {}.getType();
// JSON string to Java Map object
Map<String, Object> data = new Gson().fromJson(jsonString, type);
Map<String,Object> properties=(Map<String,Object>)data.get("properties");
Object lastname = properties.get("lastname");
Object firstname = properties.get("firstname");
// convert Object into JSON string back
System.out.println(new Gson().toJson(lastname));
Type Type=new-TypeToken(){}.getType();
//Java映射对象的JSON字符串
Map data=new Gson().fromJson(jsonString,type);
映射属性=(Map)data.get(“属性”);
Object lastname=properties.get(“lastname”);
Object firstname=properties.get(“firstname”);
//将对象转换回JSON字符串
System.out.println(新的Gson().toJson(lastname));
您需要花一些时间阅读
firstname
,lastname
对象不是字符串
。你在期待什么?你怎么可能自动映射呢?我建议你用jsonPath编写自己的转换器。@Jaiwo99实际上,Gson非常擅长自动将JSON映射到Java。但是,这些对象实际上并不匹配。OP:如果你想继续使用Gson,请帮助它理解如何解析你的JSON。@keyser我没有说不可能自动将JSON映射到java对象,在他的情况下,不可能将此JSON映射到他期望的对象…@Jaiwo99是的,我知道,我只是不想让OP得到错误的印象。你把他从格森身边引开了。