【问题标题】:How to read Json string in Java如何在 Java 中读取 Json 字符串
【发布时间】: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;
    }
}

【问题讨论】:

  • firstnamelastname 是 Object 而不是 String。你在期待什么?
  • 你怎么可能自动映射这个...我建议你用 jsonPath 编写你自己的转换器..
  • @Jaiwo99 实际上,Gson 非常擅长将 JSON 自动映射到 Java。但是,这些对象并不真正匹配。 OP:如果您想继续使用 Gson,请帮助它了解如何解析您的 JSON。
  • @keyser 我没有说不可能自动将 json 映射到 java 对象,在他的情况下,将这个 json 映射到他期望的对象是不可能的......跨度>
  • @Jaiwo99 是的,我知道,我只是不想让 OP 得到错误的印象。你让他远离 Gson。

标签: java json


【解决方案1】:

您需要在 Java POJO 类或 Map 中创建 JSON 字符串的精确副本

这是从properties 获取firstnamelastname 的简单代码

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));

你需要花一些时间阅读GSON library

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-25
    • 2021-05-13
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2011-07-17
    • 2023-04-04
    相关资源
    最近更新 更多