如何从Android中的原始有效载荷中提取值?

2019年5月18日 14点热度 0条评论

我正在尝试从以下JSON中提取google.sent_time,如何获得该值?
似乎这是原始的有效负载,而不是简单的JSON,因此想知道是否有提取方法吗?

{
  "notificationID": "677291f5-a784-43df-af2e-0067e9c",
  "title": "test 223",
  "body": "payload",
  "lockScreenVisibility": 1,
  "groupMessage": "",
  "fromProjectNumber": "819539062812",
  "priority": 5,
  "rawPayload": "{\"google.delivered_priority\":\"normal\",\"google.sent_time\":1591849563191,\"google.ttl\":259200,\"google.original_priority\":\"normal\",\"custom\":\"{\\\"i\\\":\\\"677291f5-a784-43df-af2e-0363a4067e9c\\\"}\",\"oth_chnl\":\"\",\"pri\":\"5\",\"vis\":\"1\",\"from\":\"819539062812\",\"alert\":\"payload\",\"title\":\"test 223\",\"grp_msg\":\"\",\"google.message_id\":\"0:1591849563205759%409ebbcaf9fd7ecd\",\"google.c.sender.id\":\"819539062812\",\"notificationId\":-1451117355}"
}

解决方案如下:

它是JSON,转义了一些字符,因此可以适合您主要JSON中的字符串类型字段。

您可以将提要“ rawPayload”字段的字符串值提取到要使用的JSON解析器的提要中,也可以直接在字符串上使用正则表达式来获取值:

这是一个正则表达式示例:

Pattern p = Pattern.compile("google\\.sent_time.*:(\\d+)");
Matcher m = p.matcher(yourInputString);
m.find();
String sentTime = m.group(1);