【问题标题】:How to extract a download link from a JSON using Regex?如何使用正则表达式从 JSON 中提取下载链接?
【发布时间】:2018-08-04 14:55:47
【问题描述】:

我正在尝试为 JDownloader 创建一个插件,但我无法获得开始下载的最终链接。

在我发送带有我要下载的链接的 POST 后,主机向我发送以下响应:

{"error":"0","link":"http:\/\/originalhost.net\/file\/ba0jf5t8","type":"2","name":"test.zip","size":"5 MB","date":"31\/12\/2017 15:56","until":"31\/12\/2018 15:56","download":"http:\/\/beta.generatedlink.net\/originalhost\/randomuuid\/test.zip","password":""}

我只想使用 Regex 提取:

http://beta.generatedlink.net/originalhost/randomuuid/test.zip

我尝试了一些我在网上找到的示例,但我无法开始工作

我该怎么做?

【问题讨论】:

  • 为什么是正则表达式?我们有解析器。
  • How to parse JSON in Java的可能重复
  • Pshemo 我正在使用来自另一个 JDownloader 插件的代码并编辑字段以匹配我的标准。此代码使用正则表达式来提取链接,所以我认为我只能使用正则表达式

标签: java json regex


【解决方案1】:

这将获取给定键的值。

String jsonData = "" // fill it with your data
String pattern = "(?:\"download\":\")(.*?)(?:\")"; // download is key
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(jsonData);
if (m.find()) {
    System.out.println("Found value: " + m.group(0));
} else {
    System.out.println("NO MATCH");
}

【讨论】:

  • 几乎可以工作。该值被提取,但像这样 http:/\/\/beta.generatedlink.net\/originalhost\/randomuuid\/test.zip
  • 我使用 replace("\\", "").replace("\"", "");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 2011-05-31
  • 2021-08-28
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 2010-12-31
相关资源
最近更新 更多