java - 如何从android中的原始有效负载中提取价值?
问题描述
我正在尝试从以下 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);
推荐阅读
- powershell - 脚本 PowerShell 以使用 SSH 连接到多个 HP ProCurve 交换机
- ssh - 在 SSH 窗口中使用“gcloud compute scp”命令将文件上传到 vm 实例时出现“没有这样的文件或目录”错误
- xpath - 如何从多个搜索结果页面中抓取数据?
- scala - 使用 sbt for Spark 打包 JAR 文件
- r - nginx 没有为使用 Docker 托管在 AWS 上的 R 管道工 API 提供性能提升
- python - 网页抓取 - Python;写入 CSV
- ubuntu - 无法将 Ubuntu 服务器 12.04LTS 升级到 14.04LTS
- javascript - JavaScript 对象操作的问题
- r - r data.table 复制或不复制
- scala - Scala Intellij 中的递归循环错误