From 06e600f5d48cdf7391930523daba5e7ed66b40bb Mon Sep 17 00:00:00 2001 From: Zynh0722 Date: Thu, 1 Feb 2024 22:52:05 -0800 Subject: [PATCH] parsing data and stuff --- Cargo.lock | 96 +++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 3 ++ src/main.rs | 13 +++++-- src/raw_data.rs | 20 +++++++++++ 4 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 Cargo.lock create mode 100644 src/raw_data.rs diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..b4db1e7 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,96 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "anyhow" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "lodestone-level-calc-rs" +version = "0.1.0" +dependencies = [ + "anyhow", + "serde", + "serde_json", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "ryu" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" + +[[package]] +name = "serde" +version = "1.0.196" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.196" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.113" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" diff --git a/Cargo.toml b/Cargo.toml index f4dc142..67e2bde 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,3 +6,6 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +anyhow = "1.0.79" +serde = { version = "1.0.196", features = ["alloc", "serde_derive"] } +serde_json = { version = "1.0.113", features = ["alloc"] } diff --git a/src/main.rs b/src/main.rs index e7a11a9..04f9b93 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,12 @@ -fn main() { - println!("Hello, world!"); +mod raw_data; +use crate::raw_data::JobStats; + +use std::fs::File; + +fn main() -> anyhow::Result<()> { + let raw: Vec = serde_json::from_reader(File::open("./29932586.json")?)?; + + println!("{raw:#?}"); + + Ok(()) } diff --git a/src/raw_data.rs b/src/raw_data.rs new file mode 100644 index 0000000..2a8c3f5 --- /dev/null +++ b/src/raw_data.rs @@ -0,0 +1,20 @@ +use serde::Deserialize; + +#[derive(Deserialize, Debug)] +pub struct JobStats { + // TODO: is specialized + #[serde(rename = "Level")] + pub level: u8, + /// I'm annoyed I need to parse this entire structure + /// However the class/job dichotamy means the name + /// field in this parent struct is tainted + #[serde(rename = "UnlockedState")] + pub unlocked_state: UnlockedState, +} +#[derive(Deserialize, Debug)] +pub struct UnlockedState { + #[serde(rename = "ID")] + pub id: usize, + #[serde(rename = "Name")] + pub name: String, +}