我的文件中填充了JSON格式的对象,其中包含数千名用户的电子邮件属性。
{
"object":"list",
"read_only":{
},
"full_access":{
"data":[
{
"id":"32923939",
"platform_id":"12313",
"name":"test",
"email":"test@example.com",
"created_date":"08 Feb 17 10:02 +0000"
},
{
"id":"135541",
"platform_id":"1234",
"name":"test",
"email":"test@example.com",
"created_date":"08 Feb 17 10:00 +0000"
},
{
"id":"484949383",
"platform_id":"494948",
"name":"test",
"email":"test@example.com",
"created_date":"08 Feb 17 08:46 +0000"
},
{
"id":"595033",
"platform_id":"test",
"name":"test",
"email":"test@example.com",
"created_date":"30 Sep 16 17:51 +0000"
}
]
},
"never_logged_in":{
}
}
我面临的问题是某些对象格式不正确,因此我无法在代码中使用它们。我想知道是否有一种方法可以在文件中搜索字符串,"电子邮件:",然后是电子邮件地址,并删除其他所有内容。我觉得我可以使用正则表达式完成此操作,以检测电子邮件地址,但我不确定如何自己做。
有人可以提供任何见解或建议吗?
答案 0 :(得分:0)
在Javascript中,你可以做类似的事情 -
var myJson = {"object":"list","read_only":{},"full_access":{"data":[{"id":"32923939","platform_id":"12313","name":"test","email":"test@example.com","created_date":"08 Feb 17 10:02 +0000"},{"id":"135541","platform_id":"1234","name":"test","email":"test@example.com","created_date":"08 Feb 17 10:00 +0000"},{"id":"484949383","platform_id":"494948","name":"test","email":"test@example.com","created_date":"08 Feb 17 08:46 +0000"},{"id":"595033","platform_id":"test","name":"test","email":"test@example.com","created_date":"30 Sep 16 17:51 +0000"}]},"never_logged_in":{}}
var result = myJson.full_access.data.filter(x=>x.email && x.email!="")
.map(x=>x.email);
console.log(result);
它将检查data
属性中的元素是否具有email
(.filter
方法),然后在数组中映射出电子邮件ID。
这是一个JSFiddle link。检查控制台输出。
注意:如果您只想将其作为一次性活动,请将您收到的原始对象粘贴到小提琴中,然后从控制台复制result
对象。
此外,您可以使用像JSONLint这样的linter来检查所有JSON的破坏位置。