auto.js 中文文档 下载 App

JSON、剪贴板与网络请求——数据处理三件套

JSON 处理

// 解析 JSON 字符串 → 对象
var obj = JSON.parse('{"name":"张三","age":25}');
log(obj.name); // "张三"

// 对象 → JSON 字符串
var json = JSON.stringify({ name: "张三", items: [1, 2, 3] });
files.write("/sdcard/data.json", json);

// 美化输出
var pretty = JSON.stringify(obj, null, 2);

剪贴板

// 写剪贴板
clipboard.set("https://example.com/data.json");

// 读剪贴板
var text = clipboard.getText();
toast("剪贴板:" + text);

// 清空剪贴板
clipboard.set("");

剪贴板适合在 Auto.js 和其他 APP 之间传递简单文本数据(比如从浏览器复制一个链接,然后脚本读取)。

HTTP 请求

// GET 请求
var res = http.get("https://api.example.com/data");
log(res.statusCode);  // 200
log(res.body.string()); // 响应体文本

// 带参数的 GET
var res = http.get("https://api.example.com/search", {
  query: { keyword: "auto.js", page: 1 },
  headers: { "User-Agent": "AutoJs/6.0" }
});

// POST 请求
var res = http.postJson("https://api.example.com/submit", {
  name: "测试",
  value: 42
});

// 下载文件
http.get("https://example.com/file.zip", {
  path: "/sdcard/download/file.zip"
});

超时与错误处理

var res;
try {
  res = http.get("https://api.example.com/data", { timeout: 10000 });
  if (res.statusCode == 200) {
    var data = JSON.parse(res.body.string());
    log("获取成功:" + data);
  } else {
    log("HTTP " + res.statusCode);
  }
} catch (e) {
  log("网络错误:" + e);
}

完整示例:获取 API 数据并处理

auto.waitFor();

try {
  var res = http.get("https://api.github.com/repos/hyb1996/Auto.js");
  if (res.statusCode == 200) {
    var repo = JSON.parse(res.body.string());
    log("项目:" + repo.full_name);
    log("Stars:" + repo.stargazers_count);
    log("Forks:" + repo.forks_count);
  }
} catch (e) {
  log("请求失败:" + e.message);
}