我正在try 从这个页面https://ziglang.org/download/index.json获取和解析json. 我用的是Windows 11. 当我执行代码时,我得到以下错误:
error: MissingField
C:\Program Files\zig-windows-x86_64-0.12.0-dev.1637+673a1efa2\lib\std\json\static.zig:785:17: 0x7ff6dd5dc141 in fillDefaultStructValues__anon_12928 (zig.exe.obj)
return error.MissingField;
^
C:\Program Files\zig-windows-x86_64-0.12.0-
dev.1637+673a1efa2\lib\std\json\static.zig:375:13: 0x7ff6dd4fb8d8 in innerParse__anon_10633
(zig.exe.obj)
try fillDefaultStructValues(T, &r, &fields_seen);
^
C:\Program Files\zig-windows-x86_64-0.12.0-
dev.1637+673a1efa2\lib\std\json\static.zig:140:19: 0x7ff6dd4acef4 in parseFromTokenSourceLeaky__anon_7857 (zig.exe.obj)
const value = try innerParse(T, allocator, scanner_or_reader, resolved_options);
^
C:\Program Files\zig-windows-x86_64-0.12.0-
dev.1637+673a1efa2\lib\std\json\static.zig:88:5: 0x7ff6dd49a48b in
parseFromSliceLeaky__anon_7322 (zig.exe.obj)
return parseFromTokenSourceLeaky(T, allocator, &scanner, options);
^
C:\Users\asd\Desktop\zig\src\main.zig:33:24: 0x7ff6dd49a022 in main (zig.exe.obj)
const parsed = try std.json.parseFromSliceLeaky(
^
run zig: error: the following command exited with error code 1:
C:\Users\asd\Desktop\zig\zig-out\bin\zig.exe
Build Summary: 3/5 steps succeeded; 1 failed (disable with --summary none)
run transitive failure
└─ run zig failure
error: the following build command failed with exit code 1:
C:\Users\asd\Desktop\zig\zig-cache\o\decc8983be50701f9459d8ab9008fb1a\build.exe
C:\Program Files\zig-windows-x86_64-0.12.0-dev.1637+673a1efa2\zig.exe
C:\Users\asd\Desktop\zig C:\Users\kstoy\OneDrive\Desktop\zig\zig-cache
C:\Users\asd\AppData\Local\zig --seed 0x1f71bf2c run
从错误中,我只能假设我的 struct 和我试图在其中解析的json之间存在一些差异,但我将 struct 字段与json的字段进行了比较,似乎并非如此.我也try 过将ignore_unknown_fields
字段设置为真,但没有任何区别
以下是我的代码:
const std = @import("std");
const print = std.debug.print;
const Uri = std.Uri;
const Client = std.http.Client;
const Headers = std.http.Headers;
const FetchOptions = std.http.Client.FetchOptions;
const Location = std.http.Client.FetchOptions.Location;
const ArenaAllocator = std.heap.ArenaAllocator;
pub fn main() !void {
var page_allocator = ArenaAllocator.init(std.heap.page_allocator);
defer page_allocator.deinit();
const allocator = page_allocator.allocator();
const uri = try Uri.parse("https://ziglang.org/download/index.json");
var client = Client{ .allocator = allocator };
var headers = Headers{ .allocator = allocator };
defer headers.deinit();
try headers.append("accept", "*/*");
var options = FetchOptions{
.method = .GET,
.headers = headers,
.location = Location{ .uri = uri },
};
var res = try client.fetch(allocator, options);
defer res.deinit();
if (res.body) |body| {
print("body: {s}", .{body});
const parsed = try std.json.parseFromSliceLeaky(
ZigReleases,
allocator,
body,
.{ .ignore_unknown_fields = true },
);
const zig_releases = parsed.master;
print("asd {}", .{zig_releases});
} else {
print("Request failed\n", .{});
}
}
const ZigReleases = struct {
master: Master,
@"0_1_1": @"0_1_1",
@"0_2_0": @"0_2_0",
@"0_3_0": @"0_3_0",
@"0_4_0": @"0_4_0",
@"0_5_0": @"0_5_0",
@"0_6_0": @"0_6_0",
@"0_7_0": @"0_7_0",
@"0_7_1": @"0_7_1",
@"0_8_0": @"0_8_0",
@"0_8_1": @"0_8_1",
@"0_9_0": @"0_9_0",
@"0_9_1": @"0_9_1",
@"0_10_0": @"0_10_0",
@"0_10_1": @"0_10_1",
@"0_11_0": @"0_11_0",
};
const Master = struct {
version: []const u8,
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-macos": BuildInfo,
@"aarch64-macos": BuildInfo,
@"x86_64-linux": BuildInfo,
@"aarch64-linux": BuildInfo,
@"armv7a-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"powerpc64le-linux": BuildInfo,
@"powerpc-linux": BuildInfo,
@"x86-linux": BuildInfo,
@"x86_64-windows": BuildInfo,
@"aarch64-windows": BuildInfo,
@"x86-windows": BuildInfo,
};
const @"0_1_1" = struct {
date: []const u8,
docs: []const u8,
notes: []const u8,
src: BuildInfo,
@"x86_64-windows": BuildInfo,
};
const @"0_2_0" = struct {
date: []const u8,
docs: []const u8,
notes: []const u8,
src: BuildInfo,
@"x86_64-windows": BuildInfo,
@"x86_64-linux": BuildInfo,
};
const @"0_3_0" = struct {
date: []const u8,
docs: []const u8,
notes: []const u8,
src: BuildInfo,
@"x86_64-macos": BuildInfo,
@"x86_64-linux": BuildInfo,
@"x86_64-windows": BuildInfo,
};
const @"0_4_0" = struct {
date: []const u8,
docs: []const u8,
notes: []const u8,
src: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"x86_64-macos": BuildInfo,
@"x86_64-linux": BuildInfo,
@"x86_64-windows": BuildInfo,
};
const @"0_5_0" = struct {
date: []const u8,
docs: []const u8,
notes: []const u8,
src: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"x86_64-macos": BuildInfo,
@"x86_64-linux": BuildInfo,
@"x86_64-windows": BuildInfo,
};
const @"0_6_0" = struct {
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
notes: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"aarch64-linux": BuildInfo,
@"armv6kz-linux": BuildInfo,
@"armv7a-linux": BuildInfo,
@"i386-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"x86_64-linux": BuildInfo,
@"x86_64-macos": BuildInfo,
@"i386-windows": BuildInfo,
@"x86_64-windows": BuildInfo,
};
const @"0_7_0" = struct {
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
notes: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"x86_64-macos": BuildInfo,
@"x86_64-linux": BuildInfo,
@"x86_64-windows": BuildInfo,
@"i386-windows": BuildInfo,
@"i386-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"armv7a-linux": BuildInfo,
@"armv6kz-linux": BuildInfo,
@"aarch64-linux": BuildInfo,
@"aarch64-macos": BuildInfo,
};
const @"0_7_1" = struct {
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
notes: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"aarch64-linux": BuildInfo,
@"armv7a-linux": BuildInfo,
@"i386-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"x86_64-linux": BuildInfo,
@"x86_64-macos": BuildInfo,
@"i386-windows": BuildInfo,
@"x86_64-windows": BuildInfo,
};
const @"0_8_0" = struct {
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
notes: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"aarch64-linux": BuildInfo,
@"armv7a-linux": BuildInfo,
@"i386-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"x86_64-linux": BuildInfo,
@"aarch64-macos": BuildInfo,
@"x86_64-macos": BuildInfo,
@"i386-windows": BuildInfo,
@"x86_64-windows": BuildInfo,
};
const @"0_8_1" = struct {
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
notes: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"aarch64-linux": BuildInfo,
@"armv7a-linux": BuildInfo,
@"i386-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"x86_64-linux": BuildInfo,
@"aarch64-macos": BuildInfo,
@"x86_64-macos": BuildInfo,
@"i386-windows": BuildInfo,
@"x86_64-windows": BuildInfo,
};
const @"0_9_0" = struct {
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
notes: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"aarch64-linux": BuildInfo,
@"armv7a-linux": BuildInfo,
@"i386-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"x86_64-linux": BuildInfo,
@"aarch64-macos": BuildInfo,
@"x86_64-macos": BuildInfo,
@"i386-windows": BuildInfo,
@"x86_64-windows": BuildInfo,
@"aarch64-windows": BuildInfo,
};
const @"0_9_1" = struct {
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
notes: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"aarch64-linux": BuildInfo,
@"armv7a-linux": BuildInfo,
@"i386-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"x86_64-linux": BuildInfo,
@"aarch64-macos": BuildInfo,
@"x86_64-macos": BuildInfo,
@"i386-windows": BuildInfo,
@"x86_64-windows": BuildInfo,
@"aarch64-windows": BuildInfo,
};
const @"0_10_0" = struct {
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
notes: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"i386-windows": BuildInfo,
@"aarch64-linux": BuildInfo,
@"armv7a-linux": BuildInfo,
@"i386-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"x86_64-linux": BuildInfo,
@"aarch64-macos": BuildInfo,
@"x86_64-macos": BuildInfo,
@"x86_64-windows": BuildInfo,
@"aarch64-windows": BuildInfo,
};
const @"0_10_1" = struct {
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
notes: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-macos": BuildInfo,
@"aarch64-macos": BuildInfo,
@"x86_64-linux": BuildInfo,
@"aarch64-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"i386-linux": BuildInfo,
@"x86_64-windows": BuildInfo,
@"aarch64-windows": BuildInfo,
};
const @"0_11_0" = struct {
date: []const u8,
docs: []const u8,
stdDocs: []const u8,
notes: []const u8,
src: BuildInfo,
bootstrap: BuildInfo,
@"x86_64-freebsd": BuildInfo,
@"x86_64-macos": BuildInfo,
@"aarch64-macos": BuildInfo,
@"x86_64-linux": BuildInfo,
@"aarch64-linux": BuildInfo,
@"armv7a-linux": BuildInfo,
@"riscv64-linux": BuildInfo,
@"powerpc64le-linux": BuildInfo,
@"powerpc-linux": BuildInfo,
@"x86-linux": BuildInfo,
@"x86_64-windows": BuildInfo,
@"aarch64-windows": BuildInfo,
@"x86-windows": BuildInfo,
};
const BuildInfo = struct {
tarball: []const u8,
shasum: []const u8,
size: []const u8,
};
ZIG版本:0.12.0-dev.1637+673a1efa2