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);
}